function validateRequiredField(id, label, required)
{
	if (!document.getElementById(id)) return true;	// Not existing
	if ((required == true) && (document.getElementById(id).value == ""))
	{
		alert("Het veld '" + label + "' is een verplicht veld");
		return false;
	}
	else
	{
		return true;
	}
}

function validateTextField(id, label, required, length)
{
	if (!document.getElementById(id)) return true;	// Not existing
	if ((!required) && (document.getElementById(id).value == "")) return true;
	if (!validateRequiredField(id, label, required)) return false;
	if ((length) && (document.getElementById(id).value.length > length))
	{
		alert("Field '" + label + "' mag niet meer dan " + length + " characters zijn");
		return false;
	}
	return true;
}

function doRequest(method, url, args, callbackFunction, callbackArgument)
{
	if ((method != "GET") && (method != "POST"))
	{
		alert("Invalid request method: " + method);
		return null;
	}
	var postData = "";
	if (args)
	{
		var argIndex = 0;
		for (key in args)
		{
			if (argIndex > 0) postData += "&";
			postData += encodeURIComponent(key) + "=" + encodeURIComponent(args[key]);
			argIndex ++;
		}
		if (method == "GET")
		{
			url += "?" + postData;
		}
	}
	// Create request
	var request = null;
	if (window.XMLHttpRequest) // Firefox, Opera, iCab
	{
        request = new XMLHttpRequest();
	}
    else if (window.ActiveXObject) // IE5.5,6,7
	{
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
	if (!request)
	{
		alert("Failed to load XMLHttpRequest");
		return;
	}
	// Do request
	if (callbackFunction)
	{
		request.onreadystatechange = function() {
			if (request.readyState == 4)
			{
				var data = processResponse(request);
				callbackFunction(data, callbackArgument);
			}
		}
	}
	var async = callbackFunction != null;
	request.open(method, url, async);
	if (method == "POST")
	{
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		request.send(postData);
	}
	else
	{
		request.send(null);
	}
	// Process response
	if (!callbackFunction)	// Async
	{
		return processResponse(request);
	}
}

function processResponse(request)
{
	if ((request.status) && (request.status != 200) && (request.status != 201))
	{
		alert("RPC failure: HTTP error\r\nHTTP status: " + request.status + "\r\nBody:\r\n" + request.responseText);
		return null;
	}
	try
	{
		var data = eval(request.responseText);
		return data;
	}
	catch (e)
	{
		alert("JSON parsing failure: JSON data\r\n" + request.responseText);
		return null;
	}
}

function setDocListCookie(index, objectType, objectID, checkbox)
{
	if (checkbox.checked)
	{
		document.cookie = "doclist_"+index+"="+objectType+","+objectID;
	}
	else
	{
		document.cookie = "doclist_"+index+"=";
	}
}

