var lastRadioCheck;


/*
Find and set the value of a specified page element
*/
function setPageElementValue(iPageElem, iValue, iName, iSelectValue) {
	// If the page element exists on the page
	//if ((iPageElem) && (iValue != '')) {
	if (iPageElem) {
		
		// Determine the page element type to know what value to update
		switch (iPageElem.type) {
			// Standard form elements
			case 'text':
			case 'password':
			case 'file':
			case 'hidden':
			case 'submit':
			case 'button':
			case 'reset':
			case 'textarea':
						if (iValue == '_null_') {
							iPageElem.value = '';
						} else {
							iPageElem.value = iValue;												
						}
						break;

			case 'select-one':
						if (iSelectValue) { // Select drop down value by the inner html
							for (i = 0; i < iPageElem.length; i ++) {
								if (iPageElem[i].innerHTML == iValue) { iPageElem.selectedIndex = i; }
							}
							
						} else { // Select drop down value by the value itself				
							if (iValue == '_null_') {
								iPageElem.value = '';
							} else {
								iPageElem.value = iValue;												
							}
						}
						
						break;
						
			case 'checkbox':
						if (iValue == iPageElem.value) {
							iPageElem.checked = true;
						} else {
							iPageElem.checked = false;
						}
						
						break;
			
			case 'radio':
						if (lastRadioCheck != iName) {
							doRadioCheck(iPageElem, iValue);
							lastRadioCheck = iName;
						}
									
						break;	
															
			// Assume it's a display object (table, form, div..etc)
			default:
						//alert(iPageElem.type + ' -- ' + iValue);
						if (iValue == '_null_') {
							iPageElem.innerHTML = '';
						} else {
							iPageElem.innerHTML = iValue;	
						}
						break;
		}
		
	} else {					
		// Check to see if it's a javascript event we need to perform
		if (iName.indexOf('script_') == 0) {
			performJavascript(iValue);
		}
		
		// Check to see if it's an array we need to parse
		if (iName.indexOf('array_') == 0) {
			selectMultiple(iName, iValue);			
		}
	}	
}


/*
Parse a comma deliminated strip and select multiples in the select form element
*/
function selectMultiple(iName, iValue) {
	if (destinationContainerForm) {
		var tmpElem = findContainedObj(iName.replace('array_', '') + '[]', destinationContainerForm);
	} else {					
		var tmpElem = findObj(iName.replace('array_', '') + '[]');
	}
	
	var tmpValue = iValue.split(",");
	
	if (!tmpElem) { return false; }
	
	// Loop through each value in the multiple select form element
	for (si = 0; si < tmpElem.length; si ++) {
		if (tmpElem[si].value != '') {
			// Loop through each value in the array
			for (ti = 0; ti < tmpValue.length; ti ++) {
				if ((tmpElem[si].value == tmpValue[ti]) || (tmpValue[ti] == '{_all_}')) { tmpElem[si].selected = true; }
			}
		}
	}
}


/*
Check a radio button then perform the click() event
*/
function doRadioCheck(pageElem, itemValue) {
	if (destinationContainerForm) {
		var radio_objs = destinationContainerForm.getElementsByTagName("input");
	} else {					
		var radio_objs = document.getElementsByTagName("input");
	}

	if (radio_objs.length) {
		for (i = 0; i < radio_objs.length; i++) {
			if (radio_objs[i].type == 'radio') {
				if ((radio_objs[i].id == pageElem.id) || (radio_objs[i].name == pageElem.name)) {
					if (radio_objs[i].value == itemValue) {
						radio_objs[i].checked = true;
					}
				}
			}
		}
	}
}


/*
Create a hidden div and force-perform a javascript command
*/
function performJavascript(iFunction) {
	if ((iFunction == '_null_') || (iFunction == '')) { return false; }
	
	dv = document.createElement("div");
	dv.style.display = 'none';
	
	dv.innerHTML = '<img src="/images/blank.gif" width="100" onload="' + iFunction + '">';

	document.body.appendChild(dv);
}


/*
Clear all the error labels for a form submission
*/
function clearFormErrors(containerObj) {
	
	if (containerObj.getElementsByTagName) {
		// Clear all errors that are within a table cell
		var tmpObj = containerObj.getElementsByTagName("td");
		for (var i = 0; i < tmpObj.length; i++) {			
			if (tmpObj[i].id.indexOf('_error') > 0) {
				if (tmpObj[i].innerHTML != '') { tmpObj[i].innerHTML = ''; tmpObj[i].style.display = 'none'; }
			}
		}
		
		// Clear all errors that are within a div
		var tmpObj = containerObj.getElementsByTagName("div");
		for (var i = 0; i < tmpObj.length; i++) {			
			if (tmpObj[i].id.indexOf('_error') > 0) {
				if (tmpObj[i].innerHTML != '') { tmpObj[i].innerHTML = ''; tmpObj[i].style.display = 'none'; }
			}
		}
		
		// Clear all errors that are within a span
		var tmpObj = containerObj.getElementsByTagName("span");
		for (var i = 0; i < tmpObj.length; i++) {
			if (tmpObj[i].id.indexOf('_error') > 0) {
				if (tmpObj[i].innerHTML != '') { tmpObj[i].innerHTML = ''; tmpObj[i].style.display = 'none'; }
			}
		}
		
		// Clear all the errors that are based on form elements
		var tmpObj = containerObj.getElementsByTagName("input");
		for (var i = 0; i < tmpObj.length; i++) {
			cleanFormError(tmpObj[i]);
		}

		var tmpObj = containerObj.getElementsByTagName("select");
		for (var i = 0; i < tmpObj.length; i++) {
			cleanFormError(tmpObj[i]);
		}
		
		var tmpObj = containerObj.getElementsByTagName("textarea");
		for (var i = 0; i < tmpObj.length; i++) {
			cleanFormError(tmpObj[i]);
		}		
	}
}


/*
Set the form element and display label to show an error
*/
function setFormError(iErrorName) {
	var class_name = 'errorCell';
	var tmpName = replace(iErrorName, '_error', '');
	
	if (!tmpName) { return false; }
	
	if (tmpName == 'yesUpdate') { class_name = 'errorCell updateBorder'; }
	
	var tmpFormElem = findObj(tmpName);
	var tmpErrorLabel = findObj(tmpName + '_label');
	var tmpDisplayElem = findObj(tmpName + '_display');
	
	if (tmpDisplayElem) { tmpFormElem = tmpDisplayElem; }
	
	if (tmpFormElem) { tmpFormElem.className = 'errorElem'; }
	if (tmpErrorLabel) { tmpErrorLabel.className = class_name; }
}


/*
The error element has been focuses so clear any error objects
*/
function cleanFormError(iErrorObj) {
	var class_name = '';
	var tmpName = iErrorObj.name || iErrorObj.id;
	
	if (!tmpName) { return false; }
	
	if (tmpName == 'yesUpdate') { class_name = 'updateBorder'; }
	
	var tmpFormElem = findObj(tmpName);
	var tmpErrorLabel = findObj(tmpName + '_label');
	
	if (tmpFormElem) { 
		if (tmpFormElem.className == 'errorElem') { tmpFormElem.className = ''; }	
	}
	
	if (tmpErrorLabel) { tmpErrorLabel.className = class_name; }
}


/*
Disable a form button, and set updating display label
*/
function doFormSubmit(displayLabel, iForm) {
	//iForm.elements['updateBtn'].disabled = true;
	
	displayLabel = replace(displayLabel, '...', '<img src=\'/images/progress_dots.gif\'>');
	
	var tmpObj = findObj(iForm.id);
	
	//findContainedObj('updateMsg', tmpObj).innerHTML = '<span class="btext12">' + displayLabel + '</span><br><br>';
	findContainedObj('updateMsg', tmpObj).innerHTML = '<span class="btext10">' + displayLabel + '</span><br><br>';
	
	//findObj('updateBtn').disabled = true;
}