function open_win(url, width, height) {
	param_string = "width=" + width + ",height=" + height
			+ ",scrollbars=yes,resizable=yes";
	win = window.open(url, "DETAILS", param_string);
	win.focus();
}

var ol_fgcolor = "#c1cfe6";

function popUpWindow(txt) {
	overlib(txt)
}

function popDownWindow() {
	nd()
}

function setSubCmd(command, id){
	document.getElementById(id).value = command;
}

function setElementTextById(element_id, element_text) {
	element = document.getElementById(element_id);
	if (element) {
		element.firstChild.data = element_text;
	}
}

function getElementsByName(element_name) {
	elements = document.getElementsByName(element_name);
	if (elements.length > 0) {
		return elements;
	}
	// Internet explorer?
	if (document.all) {
		all_elements = document.getElementsByTagName("*");
		counterMax = all_elements.length;
		var element_list = new Array();
		element_count = 0;
		for (counter = 0; counter < counterMax; counter++) {
			if (all_elements[counter].name) {
				if (all_elements[counter].name == element_name) {
					element_list[element_count] = all_elements[counter];
					element_count++;
				}
			}
		}
		return element_list;
	}
	return null;
}

function clickButton(button_name) {
	button = getElementsByName("button_" + button_name)[0];
	if (button) {
		button.click();
	}
}

function toggleCheckBox(checkbox_name) {
	checkbox = getElementsByName(checkbox_name)[0];
	checkbox.checked = !checkbox.checked;
}

function toggleCheckBoxes(checkbox_name_prefix) {
	inputs = document.getElementsByTagName('input');
	inputCount = inputs.length;
	for (counter = 0; counter < inputCount; counter++) {
		input = inputs[counter];
		if ("checkbox" == input.type) {
			matcher = checkbox_name_prefix + ".*";
			if (input.name.match(matcher)) {
				input.checked = !input.checked;
			}
		}
	}
}

function setOnlyCheckbox(checkbox_name_prefix, checkbox_name) {
	inputs = document.getElementsByTagName('input');
	inputCount = inputs.length;
	for (counter = 0; counter < inputCount; counter++) {
		input = inputs[counter];
		if ("checkbox" == input.type) {
			matcher = checkbox_name_prefix + ".*";
			if (input.name.match(matcher)) {
				input.checked = input.name == checkbox_name;
			}
		}
	}
}

function setButtonVisibilityOnCheckbox() {
	inputs = document.getElementsByTagName('input');
	inputCount = inputs.length;
	checked = false;
	for (counter = 0; counter < inputCount; counter++) {
		input = inputs[counter];
		if ("checkbox" == input.type) {
			if (input.checked) {
				checked = true;
			}
		}
	}
	if (checked) {
		document.getElementById('view_image_button').disabled = false;
		document
				.getElementById('button_swenet_image_browser_table_generate_changeover').disabled = false;
	} else {
		document.getElementById('view_image_button').disabled = true;
		document
				.getElementById('button_swenet_image_browser_table_generate_changeover').disabled = true;
	}
}

function alternateVisibility(condition, id1, id2) {
	elem1 = document.getElementById(id1);
	if (null == elem1) {
		return;
	}
	elem2 = document.getElementById(id2);
	if (null == elem2) {
		return;
	}

	if (condition) {
		elem1.style.display = "none";
		elem2.style.display = "";
	} else {
		elem1.style.display = "";
		elem2.style.display = "none";
	}
}

function toggleReadOnly(condition, id1, id2) {
	elem1 = document.getElementById(id1);
	elem2 = document.getElementById(id2);
	if (null == elem1) {
		return;
	}
	if (null == elem2) {
		return;
	}
	if (condition) {
		elem1.readOnly = true;
		elem1.style.backgroundColor = "#eeeeee";
	} else {
		elem1.readOnly = false;
		elem1.style.backgroundColor = "white";
	}
}

function toggleVisibility(element_name) {
	element = document.getElementById(element_name);
	if (null == element) {
		return;
	}
	current_visibility = element.style.display;
	tree_button = document.getElementById(element_name + "_tree_button");
	if (current_visibility == "none") {
		element.style.display = "";
		if (null != tree_button)
			tree_button.src = "images/tree_minus.png";
	} else {
		element.style.display = "none";
		if (null != tree_button)
			tree_button.src = "images/tree_plus.png";
	}
}

function toggleVisibilities(element_name) {
	elements = getElementsByName(element_name);
	if (elements) {
		for (counter = 0; counter < elements.length; counter++) {
			current_visibility = elements[counter].style.display;
			if (current_visibility == "none") {
				elements[counter].style.display = "";
				setCookie(element_name, "");
			} else {
				elements[counter].style.display = "none";
				setCookie(element_name, "none");
			}
		}
	}
}

function toggleQuantityPlotVisibility(quantity) {
	var button = document.getElementById("swenet_index_quality_button_"
			+ quantity);
	var fullTable = document.getElementById("full_table_" + quantity);
	var minTable = document.getElementById("min_table_" + quantity);
	if (button.value == "Show more " + quantity + " Plots") {
		fullTable.style.display = "";
		minTable.style.display = "none";
		button.value = "Show less " + quantity + " Plots";
	} else {
		fullTable.style.display = "none";
		minTable.style.display = "";
		button.value = "Show more " + quantity + " Plots";
	}
	validateIQHeadStatus();
}

function validateIQHeadStatus() {
	// Variables to validate the plot status of the different quantities.
	fullTables = document.getElementsByName("full_table");
	minTables = document.getElementsByName("min_table");
	tableHead = document.getElementById("table_head");
	changeAllButton = document
			.getElementById("swenet_index_quality_button_visibility_changeover");

	// Check if all plots are visible.
	var allVisible = new Boolean(true);
	for (counter = 0; counter < fullTables.length; counter++) {
		current_visibility = fullTables[counter].style.display;
		if (current_visibility == "none") {
			allVisible = false;
			break;
		}
	}

	// If visible, set the main button and the table head to the correct status.
	if (allVisible) {
		changeAllButton.value = "Show Compact View";
		tableHead.textContent = "SWENET Metrics - Full View";
	} else {

		// Check if all plots are invisible.
		var allInvisible = new Boolean(true);
		for (counter = 0; counter < minTables.length; counter++) {
			current_visibility = minTables[counter].style.display;
			if (current_visibility == "none") {
				allInvisible = false;
				break;
			}
		}

		// If invisible, set the main button and the table head to the correct
		// status.
		if (allInvisible) {
			changeAllButton.value = "Show Full View";
			tableHead.textContent = "SWENET Metrics - Compact View";
		}
	}
}

function toggleIQplotVisibilities() {
	var button = document
			.getElementById("swenet_index_quality_button_visibility_changeover");
	var singlePlotButton = document
			.getElementsByName("swenet_index_quality_button_quantity_plots");
	var fullTables = getElementsByName("full_table");
	var minTables = getElementsByName("min_table");
	var tableHead = document.getElementById("table_head");

	// Set buttons and tables to their correct status.
	if (button.value == "Show Full View") {
		button.value = "Show Compact View";
		tableHead.textContent = "SWENET Metrics - Full View";
		for (counter = 0; counter < fullTables.length; counter++) {
			fullTables[counter].style.display = "";
			minTables[counter].style.display = "none";
		}
		for (counter = 0; counter < singlePlotButton.length; counter++) {
			var value = singlePlotButton[counter].value;
			var shortValue = value.substring(9);
			singlePlotButton[counter].value = "Show less" + shortValue;
		}
	} else if (button.value == "Show Compact View") {
		button.value = "Show Full View";
		tableHead.textContent = "SWENET Metrics - Compact View";
		for (counter = 0; counter < fullTables.length; counter++) {
			fullTables[counter].style.display = "none";
			minTables[counter].style.display = "";
		}
		for (counter = 0; counter < singlePlotButton.length; counter++) {
			var value = singlePlotButton[counter].value;
			var shortValue = value.substring(9);
			singlePlotButton[counter].value = "Show more" + shortValue;
		}
	}

}

function loadVisibility(element_name, visibility) {
	elements = getElementsByName(element_name);
	if (elements) {
		for (counter = 0; counter < elements.length; counter++) {
			elements[counter].style.display = visibility;
		}
	}
}

function loadVisibilities() {
	var index = 0;
	var end;
	var middle;
	if (document.cookie.length > 0) {
		cookie = document.cookie;
		while (index < document.cookie.length) {
			while (' ' == cookie.charAt(index)) {
				index++;
			}
			middle = cookie.indexOf("=", index);
			end = cookie.indexOf(";", index);
			if (-1 == end) {
				end = cookie.length;
			}
			if (-1 == middle || middle > end) {
				middle = end;
			}
			key = unescape(cookie.substring(index, middle));
			val = middle == end ? "" : unescape(cookie.substring(middle + 1,
					end));
			loadVisibility(key, val);
			index = end + 1;
		}
	}
}

function setCookie(key, value) {
	document.cookie = key + "=" + value;
}

function getCookie(key) {
	var search = key + "=";
	var result = "";
	if (document.cookie.length > 0) {
		internet_explorer_empty_result = document.cookie.indexOf(key + ";");
		if (-1 != internet_explorer_empty_result) {
			return '';
		}
		offset = document.cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = document.cookie.indexOf(";", offset);
			if (end == -1) {
				end = document.cookie.length;
			}
			result = unescape(document.cookie.substring(offset, end));
		}
	}
	return result;
}

function toggleShowHideButton(button_id) {
	var button = document.getElementById(button_id);
	if ("show filter" == button.firstChild.nodeValue) {
		button.firstChild.nodeValue = "hide";
	} else {
		button.firstChild.nodeValue = "show filter";
	}
}

function setDates(image_count, trigger) {
	var count = document.getElementsByName(image_count)[0].value;
	for (i = 0; i < count; i++) {
		document.getElementById("time_" + trigger + "_" + i).value = document
				.getElementById("time_" + trigger + "_0").value;
	}
	document.getElementById("image_browsing_update_button").click();
}

function setAdvancedModeVisibility() {
	var lines = document.getElementsByName("hidden_image_line");
	var count = document.getElementsByName("image_counter")[0].value;
	var isAdvanced = document.getElementById("is_advanced_mode").value;
	var changeover_button = document
			.getElementById('button_swenet_image_browser_table_generate_changeover');

	if (isAdvanced == "false") {
		if (changeover_button) {
			changeover_button.style.display = '';
		}
		for (i = 0; i < count; i++) {
			document.getElementById("hidden_ref_image_calendar_" + i).style.display = "";
			document.getElementById("hidden_ref_image_combobox_" + i).style.display = "";
		}
		for (i = 0; i < 2; i++) {
			document.getElementById("hidden_ref_image_h1" + i).style.display = "";
		}
		document.getElementById("image_browsing_description").setAttribute(
				"colspan", "5");
		document.getElementById("image_browsing_single_mode").style.display = "none";
		document.getElementById("image_browsing_comparison_mode").style.display = "";
		document.getElementById("is_advanced_mode").value = "true";
		document.getElementById("image_browsing_update_button").click();
	} else {
		if (changeover_button) {
			changeover_button.style.display = 'none';
		}
		for (i = 0; i < count; i++) {
			document.getElementById("hidden_ref_image_calendar_" + i).style.display = "none";
			document.getElementById("hidden_ref_image_combobox_" + i).style.display = "none";
		}
		for (i = 0; i < 2; i++) {
			document.getElementById("hidden_ref_image_h1" + i).style.display = "none";
		}
		document.getElementById("image_browsing_description").setAttribute(
				"colspan", "3");
		document.getElementById("image_browsing_single_mode").style.display = "";
		document.getElementById("image_browsing_comparison_mode").style.display = "none";
		document.getElementById("is_advanced_mode").value = "false";
		document.getElementById("image_browsing_update_button").click();
	}
}

function showLoadingInfoField() {
	infofield = document.getElementById('loadingInfoField');
	if (infofield) {
		infofield.style.visibility = '';
	}
}

function toggleMainTableVisibility(menu_point) {
	var max_cols = 3;

	for (i = 1; i <= max_cols; i++) {
		element = document.getElementById("MainTableSpacer" + i);
		if (null != element) {
			element.style.backgroundColor = '#FFFFFF';
		}
	}

	for (i = 1; i <= max_cols; i++) {
		element = document.getElementById("MainTableText" + i);
		if (null != element) {
			element.style.display = 'none';
		}
	}

	element = document.getElementById("MainTableSpacer" + menu_point);
	if (null != element) {
		element.style.backgroundColor = '#BDCBE7';
	}

	element = document.getElementById("MainTableText" + menu_point);
	if (null != element) {
		element.style.display = '';
	}
}

function toggleExtendedMainTableVisibility(menu_point) {
	var max_cols = 4;

	for (i = 1; i <= max_cols; i++) {
		element = document.getElementById("MainTableSpacer" + i);
		if (null != element) {
			element.style.backgroundColor = '#FFFFFF';
		}
	}

	for (i = 1; i <= max_cols; i++) {
		element = document.getElementById("MainTableText" + i);
		if (null != element) {
			element.style.display = 'none';
		}
	}

	element = document.getElementById("MainTableSpacer" + menu_point);
	if (null != element) {
		element.style.backgroundColor = '#BDCBE7';
	}

	element = document.getElementById("MainTableText" + menu_point);
	if (null != element) {
		element.style.display = '';
	}
}

function jumpToAnchor(anchor) {
	if (window.location.hash == "") {
		window.location.hash = anchor;
	}
}

function changeStatistic(Address) {
	document.getElementById("statistic_iframe").src = Address;
}

