// $Revision: 5297 $
var CHECKOUT_BUSY_MESSAGE = null;

function LoadForm(bodyId, url) {
	if (!HasTagChildren(unEscape(bodyId), "div")) {
		Busy(true);
		LoadScript(url);
	}
}

function ShowDependent(id) {
	try {
		id = unEscape(id);
		var select = getElement(id);
		var opt = select.options[select.selectedIndex];
		var dependentId = opt.getAttribute("dependentid");
		var dependent = getElement(dependentId);
		if (dependent == null) {
			errorReporter.Report("WSS.js", "ShowDependent('" + id + "'): dependent '" + dependentId + "' not found.");
			return;
		}
		var children = select.parentNode.childNodes;
		for (var i = 0; i < children.length; i++) {
			var dependent = children[i];
			if (dependent.nodeType != 1) {
				// not an element
				continue;
			} else if (dependent.id == id) {
				// skip master select
				continue;
			} else if (dependent.id == dependentId) {
				// show this one
				dependent.style.display = "";
				if (dependent.tagName == "DIV" || dependent.tagName == "SPAN") {
					var inputs = dependent.getElementsByTagName("INPUT");
					for (var j = 0; j < inputs.length; j++) {
						inputs[j].disabled = false;
					}
				} else {
					dependent.disabled = false;
				}
			} else if (dependent.style == null || dependent.style.display != "none") {
				// hide all others
				dependent.style.display = "none";
				if (dependent.tagName == "DIV" || dependent.tagName == "SPAN") {
					var inputs = dependent.getElementsByTagName("INPUT");
					for (var j = 0; j < inputs.length; j++) {
						inputs[j].disabled = true;
					}
				} else {
					dependent.disabled = true;
				}
			}
		}
	}
	catch (e) {
		errorReporter.Report("WSS.js", "ShowDependent('" + id + "')", e);
	}
}

function SetCheckboxValue(checkbox, name) {
	try {
		var form = GetAncestorByTagName(checkbox, "form");
		var hidden = form.elements[name];
		hidden.value = checkbox.checked ? "True" : "False";
	}
	catch (e) {
		errorReporter.Report("WSS.js", "SetCheckBoxValue(checkbox, '" + name + "')");
	}
}

function ClipSoilLayer() {
	if (LOADSCRIPT_URL == null) {
		errorReporter.Report("WSS.js", "ClipSoilLayer(): LOADSCRIPT_URL is not set.");
		return;
	}
	Busy(true, "Clipping soils layer to AOI extent...");
	var url = new Url(LOADSCRIPT_URL);
	url.Append("command", "cliptosoilslayer");
	LoadScript(url.toString());
}


function SetDataStatus() {
	// display output panel
	var outputPanel = getElement("outputpanelid");
	if (outputPanel != null) {
		var url = new Url(LOADSCRIPT_URL);
		url.Append("command", "new_data_status");
		LoadScript(url.toString());
	}
}

function ReleaseDataStatus() {
	HideStickyCursorDiv();
}

function PropagateDownloadSoilsData(masterId, dependent) {
	var checkbox = getElement(unEscape(masterId));
	if (checkbox == null) {
		return;
	}
	var doEnable = checkbox.checked;
	switch (masterId) {
		case "includedatabaseid":
			EnableRadioTable(dependent, doEnable);
			break;
		case "includespatialid":
			Enable(dependent, doEnable);
			break;
	}
}

function EnableSubmit(formId, masterCheckboxNames, submitButtonId) {
	var form = getElement(formId);
	var isEnabled = false;
	for (var i = 0; i < masterCheckboxNames.length; i++) {
		var name = unEscape(masterCheckboxNames[i]);
		var checkbox = form.elements[name];
		if (checkbox != null && checkbox.checked) {
			isEnabled = true;
			break;
		}
	}
	var submitButton = getElement(unEscape(submitButtonId));
	if (isEnabled) {
		submitButton.disabled = false;
		DoRemoveStyleClass(submitButton, "disabled");
	} else {
		submitButton.disabled = true;
		DoAddStyleClass(submitButton, "disabled");
	}
}

var TSDragX0;
var TSW0;
var TSW_MIN = Number(0);
var TSW_MAX = Number(205);
var TransparencyLeftMargin = Number(15);
if (isIE)
{
	TransparencyLeftMargin = Number(10);
}
var SetValuesTimeout = null;

function GetTransparency() {
	var transparency = getElement("transparencyid");
	return transparency;
}

function GetTransparencySlider() {
	var slider = getElement("transparencysliderid");
	return slider;
}

function GetCurrentValueVisible() {
	var currentValue = getElement("transparencycurrentvalueid");
	return currentValue;
}

function GetCurrentValueInput() {
	var currentValueInput = getElement("soilratingstransparency");
	return currentValueInput;
}

function TransparencySliderDown(event) {
	if (event == null) {
		event = window.event;
	}
	TSDragX0 = Number(event.clientX);
	var slider = GetTransparencySlider();	
	TSW0 = parseInt(slider.style.left);
	PushOnMouseMove(TransparencySliderMove); 
	PushOnMouseUp(TransparencySliderUp);
	return Finish(event);
}

function TransparencySliderMove(event) {
	if (event == null) {
		event = window.event;
	}
	// catch mouse up event outside the map
	if (isIE) {
		if (event.button == 0) {
			TransparencySliderUp(event);
			return Finish(event);
		}
	} else if ((typeof(event.originalTarget) != "undefined") && (event.originalTarget != null)) {
		if (event.target != event.originalTarget) {
			TransparencySliderUp(event);
			return Finish(event);
		}
	}
	var width = GetTransparencySliderDragWidth(event);
	var command = "SetValues(" + width + ")";
	SetValuesTimeout = window.setTimeout(command, 0);
	return Finish(event);
}

function TransparencySliderUp(event) {
	if (event == null) {
		event = window.event;
	}
	PopOnMouseMove(TransparencySliderMove);
	PopOnMouseUp(TransparencySliderUp);
	var width = GetTransparencySliderDragWidth(event);
	var command = "SetValues(" + width + ", true)";
	SetValuesTimeout = window.setTimeout(command, 0);
	TSDragX0 = 0;
	TSW0 = 0;
	return Finish(event);
}

function GetTransparencySliderDragWidth(event) {
	var width = Number(TSW0 + event.clientX - TSDragX0);
	width = Math.min(TSW_MAX, width);
	width = Math.max(TSW_MIN, width);
	return width;
}

function TransparencyClick(event) {
	if (event == null) {
		event = window.event;
	}
	var transparency = GetTransparency();
	if (SetValuesTimeout == null)
	{
		var width = event.clientX - AbsLeft(transparency, true) - TransparencyLeftMargin;
		var command = "SetValues(" + width + ", true)";
		SetValuesTimeout = window.setTimeout(command, 0);
	}
	return Finish(event);
}

function SetValues(width, doClearTimeout) {
	width = Math.min(TSW_MAX, width);
	width = Math.max(TSW_MIN, width);
	var slider = GetTransparencySlider();
	slider.style.left = width + "px";
	var currentValueVisible = GetCurrentValueVisible();
	// number from 0% to 100%, with no decimal places
	currentValueVisible.innerHTML = ((width / TSW_MAX) * 100).toFixed() + "%";
	// number from 0 to 1, with 4 decimal places
	var currentValueInput = GetCurrentValueInput();
	currentValueInput.value = (width / TSW_MAX).toFixed(4);
	if (doClearTimeout) {
		SetValuesTimeout = null;
	}
}