function cms_delete_node_by_id_if_empty(the_id)
{
	var node = document.getElementById(the_id);
	if(node && node.value == "") node.parentNode.removeChild(node);
}

function cms_form_param_cleanup()
{
	cms_delete_node_by_id_if_empty("cms_argument_1");
	cms_delete_node_by_id_if_empty("cms_argument_2");
	cms_delete_node_by_id_if_empty("cms_argument_3");
	cms_delete_node_by_id_if_empty("cms_argument_4");
	cms_delete_node_by_id_if_empty("cms_argument_5");
	cms_delete_node_by_id_if_empty("cms_action");
}

function cms_is_in_array(arr, el)
{
	for(var i = 0; i < arr.length; ++i)
		if(arr[i] == el)
			return true;
	return false;
}

function cms_clean_everything_except(arr_of_names)
{
	// When navigating, we clean everything up except cms_page
	inputs = document.getElementsByTagName("input");
	
	var arr = new Array();
	var j = 0;
	for(var i = 0; i < inputs.length; ++i) {
		arr[j++] = inputs[i];
	}
	
	inputs = document.getElementsByTagName("select");
	for(var i = 0; i < inputs.length; ++i) {
		arr[j++] = inputs[i];
	}
	
	inputs = document.getElementsByTagName("textarea");
	for(var i = 0; i < inputs.length; ++i) {
		arr[j++] = inputs[i];
	}
	
	for(var i = 0; i < arr.length; ++i) {
		var value = arr[i].value;
		value = value ? value : "";
		
		if(value == "" || !cms_is_in_array(arr_of_names, arr[i].name)) {
			arr[i].parentNode.removeChild(arr[i]);
		}
	}
}

function cms_nav(page)
{
	document.getElementById('cms_page').value = page;
	document.getElementById('cms_action').value = "";

	var arr_exclude = new Array();
	arr_exclude[0] = "cms_page";
	cms_clean_everything_except(arr_exclude);

	document.getElementById('cms_form').submit();
}

function cms_url(url, target)
{
	window.open(url, target);
}

function cms_nav_to_anchor(page, anchor)
{
	document.getElementById("cms_form").action = document.getElementById("cms_form").action + "#" + anchor;
	cms_nav(page);
}

function cms_post_nav(page)
{
	document.getElementById('cms_form').method = 'post';
	cms_nav(page);
}

function cms_nav_with_action(page, ac)
{
	document.getElementById('cms_page').value = page;
	document.getElementById('cms_action').value = ac;
	var arr_exclude = new Array();
	arr_exclude[0] = "cms_page";
	arr_exclude[1] = "cms_action";
	arr_exclude[2] = "cms_argument_1";
	arr_exclude[3] = "cms_argument_2";
	arr_exclude[4] = "cms_argument_3";
	arr_exclude[5] = "cms_argument_4";
	cms_clean_everything_except(arr_exclude);
	document.getElementById('cms_form').submit();
}

function cms_post_nav_with_action(page, ac)
{
	document.getElementById('cms_page').value = page;
	document.getElementById('cms_action').value = ac;
	document.getElementById('cms_form').method = 'post';
	document.getElementById('cms_form').submit();
}

function cms_nav_with_action_and_arg1(page, ac, arg1)
{
	document.getElementById('cms_argument_1').value = arg1;	
	cms_nav_with_action(page, ac);
}

function cms_post_nav_with_action_and_arg1(page, ac, arg1)
{
	document.getElementById('cms_argument_1').value = arg1;	
	cms_post_nav_with_action(page, ac);
}

function cms_nav_with_action_and_arg2(page, ac, arg1, arg2)
{
	document.getElementById('cms_argument_2').value = arg2;	
	cms_nav_with_action_and_arg1(page, ac, arg1);
}

function cms_post_nav_with_action_and_arg2(page, ac, arg1, arg2)
{
	document.getElementById('cms_argument_2').value = arg2;	
	cms_post_nav_with_action_and_arg1(page, ac, arg1);
}

function cms_nav_with_action_and_arg3(page, ac, arg1, arg2, arg3)
{
	document.getElementById('cms_argument_3').value = arg3;	
	cms_nav_with_action_and_arg2(page, ac, arg1, arg2);
}

function cms_post_nav_with_action_and_arg3(page, ac, arg1, arg2, arg3)
{
	document.getElementById('cms_argument_3').value = arg3;	
	cms_post_nav_with_action_and_arg2(page, ac, arg1, arg2);
}

function cms_submit()
{
	document.getElementById('cms_form').method = "get";
	cms_form_param_cleanup();
	document.getElementById('cms_form').submit();
}

function cms_submit_with_action(ac)
{
	document.getElementById('cms_action').value = ac;
	cms_submit();
}

function cms_submit_with_action_and_arg1(ac, arg1)
{
	document.getElementById('cms_argument_1').value = arg1;	
	cms_submit_with_action(ac);
}

function cms_submit_with_action_and_arg2(ac, arg1, arg2)
{
	document.getElementById('cms_argument_2').value = arg2;	
	cms_submit_with_action_and_arg1(ac, arg1);
}

function cms_submit_with_action_and_arg3(ac, arg1, arg2, arg3)
{
	document.getElementById('cms_argument_3').value = arg3;
	cms_submit_with_action_and_arg2(ac, arg1, arg2);
}

function cms_post_submit()
{
	document.getElementById('cms_form').method = "post";
	cms_form_param_cleanup();
	document.getElementById('cms_form').submit();
}

function cms_post_submit_with_action(ac)
{
	document.getElementById('cms_action').value = ac;
	cms_post_submit();
}

function cms_post_submit_with_action_and_arg1(ac, arg1)
{
	document.getElementById('cms_argument_1').value = arg1;
	cms_post_submit_with_action(ac);
}

function cms_post_submit_with_action_and_arg2(ac, arg1, arg2)
{
	document.getElementById('cms_argument_2').value = arg2;
	cms_post_submit_with_action_and_arg1(ac, arg1);
}

function cms_post_submit_with_action_and_arg3(ac, arg1, arg2, arg3)
{
	document.getElementById('cms_argument_3').value = arg3;
	cms_post_submit_with_action_and_arg2(ac, arg1, arg2);
}


function cms_set_focus_on_keydown(evt, key, id_to_receive_focus)
{
	if((evt.which && evt.which == key) || (evt.keyCode && evt.keyCode == key)) {
		document.getElementById(id_to_receive_focus).focus();
		return false;
	} else
		return true;
}

function cms_submit_login()
{
	document.getElementById('cms_action').value = "cms_login";
	// For security reasons, we set form method to post; we do not want passwords exposed in the address bar of the browser!
	document.getElementById('cms_form').method = "post"; 
	cms_form_param_cleanup();
	document.getElementById('cms_form').submit();
}

function cms_submit_login_on_keydown(evt, key)
{
	if((evt.which && evt.which == key) || (evt.keyCode && evt.keyCode == key)) {
		document.getElementById('cms_action').value = "cms_login";
		// For security reasons, we set form method to post; we do not want passwords exposed in the address bar of the browser!
		document.getElementById('cms_form').method = "post"; 
		cms_form_param_cleanup();
		document.getElementById('cms_form').submit();
		return false;
	} else
		return true;
}

function cms_submit_logout()
{
	document.getElementById("cms_action").value = "cms_logout";
	document.getElementById("cms_form").method = "post";
	cms_form_param_cleanup();
	document.getElementById("cms_form").submit();
}

function cms_submit_set_language(lang_id)
{
	document.getElementById("cms_action").value = "cms_set_language";
	document.getElementById("cms_argument_1").value = lang_id;

	var arr_exclude = new Array();
	arr_exclude[0] = "cms_page";
	arr_exclude[1] = "cms_action";
	arr_exclude[2] = "cms_argument_1";
	cms_clean_everything_except(arr_exclude);

	document.getElementById("cms_form").submit();
}

function cms_edit_page()
{
	window.open(
		"admin/edit_page.php?cmsa_page=" + document.getElementById("cms_page").value, 
		"_blank"
	);
}

function cms_admin_page()
{
	window.location = "admin";
}

function cms_hide_element(el_id)
{
	var el = document.getElementById(el_id);
	if(el) {
		el.style.display = "none";
	}
}

function cms_show_element(el_id)
{
	var el = document.getElementById(el_id);
	if(el) {
		el.style.display = "";
	}
}

function cms_create_ajax_request()
{
	var request = null;
	try {
		request = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				request = null;
			}  
		}
	}
	
	return request;
}

function cms_parse_value_list(lst)
{
	var value_pairs = lst.split(",");
	var map = new Array();
	for(var i = 0; i < value_pairs.length; ++i) {
		var value_pair = value_pairs[i].split("=");
		map[value_pair[0]] = value_pair[1];
	}
	
	return map;
}

function cms_confirm(title, text)
{
	return confirm(title + "\r\n" + text);		
}