//-------------------------------------------------------------------------------
//                               U T I L I T I E S
//-------------------------------------------------------------------------------

// Dateformat messages

if (typeof(msg001) ==  'undefined') {
    var msg001 = 'Wrong or incomplete ';
    var msg002 = 'Use 4 figures for year ';
    var msg003 = 'Invalid ';
    var msg004 = 'Wrong month in ';
    var msg005 = 'Wrong day in ';
    var msg006 = ' must be between 0 and 23!';
    var msg007 = ' must be between 0 and 59!';
}

/////////////////////////////////////////////////////////////////////////////////
// Check if date is correct
function checkDate (objDag, objMaand, objJaar, strDatumNaam)
{
	if ( isEmpty(objDag.value) && isEmpty(objMaand.value) && isEmpty(objJaar.value) )
		return 1;

	var dag		= objDag.value * 1;
	var maand	= objMaand.value * 1;
	var jaar	= objJaar.value * 1;

	if (isNaN(dag) || (dag < 1) || (dag > 31))
	{
		errorField(objDag, msg005 + strDatumNaam + '!');
		return 0;
	}

	if (isNaN(maand) || (maand < 1) || (maand > 12)) 
	{
		errorField(objMaand, msg004 + strDatumNaam + '!');
		return 0;
	}

	if (isNaN(jaar) || jaar < 1000)
	{
		errorField(objJaar, msg002 + strDatumNaam + '!');
		return 0;
	}

	var gb = new Date (jaar, maand-1, dag);
	if (gb.getDate() != dag || gb.getMonth() != (maand-1) || gb.getFullYear() != jaar)
	{
		errorField(objDag, msg003 + strDatumNaam + '!');
		return 0;
	}
	
	// Normalize values (this will actual store the value as number, removing blanks, leading zeroes, ...)
	objDag.value = dag;
	objMaand.value = maand;
	objJaar.value = jaar;
	return 1;
}

/////////////////////////////////////////////////////////////////////////////////
// Check if time is correct
function checkTime (objHour, objMin, strTimeFieldName)
{
    if ( isEmpty(objHour.value) && isEmpty(objMin.value) )
        return 1;

    var hour = objHour.value * 1;
    var mins = objMin.value * 1;

    if (isNaN(hour) || (hour < 0) || (hour > 23))
    {
        errorField(objHour, strTimeFieldName + msg006);
        return 0;
    }

    if (isNaN(mins) || (mins < 0 ) || (mins > 59)) 
    {
        errorField(objMin, strTimeFieldName + msg007);
        return 0;
    }

	// Normalize values (this will actual store the value as a number, removing blanks, to many leading zeroes, ...)
	objHour.value = lpad(hour, '0', 2);
	objMin.value = lpad(mins, '0', 2);
    return 1;
}

/////////////////////////////////////////////////////////////////////////////////
// Check alphanumeric (A-Z,a-z,0-9,_ or space) value
var strAlpaNum = " _abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

function isAlpaNum(strValue)
{
	for (var i=0; i < strValue.length; i++)
	{
		if (strAlpaNum.indexOf(strValue.substring(i,i+1)) < 0)
			return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
// Check number value
function isNum(strValue)
{
	return !isNaN(strValue * 1);
}

/////////////////////////////////////////////////////////////////////////////////
// Check integer (0-9) value
function isInt(strValue)
{
	strValue = trim(strValue);
	for (var i=0; i < strValue.length; i++)
	{
		var ch = strValue.substring(i,i+1);
		if ("0123456789".indexOf (ch) < 0)
			return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
// Check a particular radiobutton
function setRadioCheck(theForm, strRadioName, strValue)
{
	for (var i=0; i < theForm.length; i++)
	{
		var elem = theForm.elements[i];
		if ( (elem.type == "radio") && (elem.name == strRadioName) && (elem.value == strValue) )
			elem.checked = true;
	}
}

/////////////////////////////////////////////////////////////////////////////////
// Get value of a particular checked radiobutton
function getRadioChecked(objRadioGroup)
{
	if (objRadioGroup.length == undefined) { // check if only 1 radiobutton in group
		if (objRadioGroup.checked)
			return objRadioGroup.value;
		else
			return "";
	}

	for (var i=0; i < objRadioGroup.length; i++)
	{
		var elem = objRadioGroup[i];
		if ( elem.checked )
			return elem.value;
	}
	return "";
}

/////////////////////////////////////////////////////////////////////////////////
// Select option if value match 
function selOption (objSelect, strMatch)
{
	for (var i=0; i < objSelect.options.length; i++)
	{
		var elem = objSelect.options[i];
		if ( elem.value ==  strMatch)
			elem.selected = true;
	}
}

function getOption (objSelect)
{
	var pos = objSelect.selectedIndex;
	if (pos < 0) return "";
	return objSelect.options[pos].value;
}

/////////////////////////////////////////////////////////////////////////////////
// Reset options in selectbox
function resetOptions (objSelect)
{
	for (var i=0; i < objSelect.options.length; i++) {
		var option = objSelect.options[i];
		option.selected = option.defaultSelected;
	}
}

/////////////////////////////////////////////////////////////////////////////////
// Check if a checkbox is checked
function anyCheckbox(objForm, grpname) {
	var box, i = 0, boxarray = objForm[grpname];
	if (!boxarray.length) return boxarray.checked; // there is only 1 checkbox
	for (i=0; box = boxarray[i]; i++) if (box.checked) return true;
	return false;
}

/////////////////////////////////////////////////////////////////////////////////
function isEmpty(theString)
{
	for (var i=0; i < theString.length; i++)
	{
		var ch = theString.substring(i,i+1);
		if (ch != " " && ch != "\t" && ch != "\n" && ch != "\r")
			return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
// ltrim: removes blanks from head of string
function ltrim(theString)
{
	var ch;
	while (theString.length > 0) {
		ch = theString.substring(0,1);
		if (ch != " " && ch != "\t" && ch != "\n" && ch != "\r") break;
		theString = theString.substring(1, theString.length);
	}
	return theString;
}

/////////////////////////////////////////////////////////////////////////////////
// rtrim: removes blanks from tail of string
function rtrim(theString)
{
	var ch;
	while (theString.length > 0) {
		ch = theString.substring(theString.length-1,theString.length);
		if (ch != " " && ch != "\t" && ch != "\n" && ch != "\r") break;
		theString = theString.substring(0, theString.length-1);
	}
	return theString;
}

/////////////////////////////////////////////////////////////////////////////////
// trim: removes blanks from both head and tail of string
function trim(theString)
{
	return ltrim (rtrim (theString));
}

/////////////////////////////////////////////////////////////////////////////////
// lpad: left pad a string with a character
function lpad(theObject, theChar, Max)
{
	theString = theObject.toString();
	while (theString.length < Max)
		theString = theChar + theString;
	return theString;
}

/////////////////////////////////////////////////////////////////////////////////
// Display an error and set focus to formfield in error
function errorField (objElem, txtMsg)
{
	alert (txtMsg);
	if (objElem != null)
		objElem.focus();
}

/////////////////////////////////////////////////////////////////////////////////
// Check mandatory field
function checkMandatory(field, errmsg)
{
	if (isEmpty(field.value))
	{
		errorField(field, errmsg);
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
// Get/Set Cookies

function setCookie(name,value) {
        setCookieExp(name, value, 31536000000); // 365 dagen in milliseconds
}

function setCookieExp(name,value,Expires) {
        var now = new Date();
        var then = new Date(now.getTime()+Expires);
        document.cookie = name+"="+escape(value) +"; expires="+then.toGMTString()+"; path=/";
}

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

/////////////////////////////////////////////////////////////////////////////////
// Disable all buttons of a form (names must start with 'bt'
var disabled_page = false;

function disableButtons(f) {
	disabled_page = true;
	for (i=0; i<f.elements.length; i++) {
		var e = f.elements[i];
		if (e.type == "button" && e.name.indexOf("bt") == 0) e.disabled=1;
		if (e.type == "submit" && e.name.indexOf("bt") == 0) e.disabled=1;
		if (e.type == "reset" && e.name.indexOf("bt") == 0) e.disabled=1;
	}
}

/////////////////////////////////////////////////////////////////////////////////
// Check if correct date
function isDate (year, month, day) {
	// month argument must be in the range 1 - 12
	month = month - 1; // javascript month range : 0- 11
	var tempDate = new Date(year,month,day);
	
	if ( (year == tempDate.getFullYear()) &&
		(month == tempDate.getMonth()) &&
		(day == tempDate.getDate()) )
		return true;
	else
		return false
}
		

/////////////////////////////////////////////////////////////////////////////////
// Check if correct datestring (may be empty)
function checkDateStr(field, message) {
	field.value = trim(field.value);
	if (field.value == "") return true;

	var myDate=field.value.split("/");
	day = myDate[0];
	month = myDate[1];
	year = myDate[2];

	if (isDate(year, month, day)) {
		return true;	
	} else {
		errorField(field, message);
		return false;	
	}	
}

// Check email field
function emailValidator(field, errmsg)
{
	if(field.value.indexOf('@',0) == -1 || field.value.indexOf('.',0) == -1) {
		errorField(field, errmsg);
		return false;
	}
	return true;
}

function compareField (field_a, field_b, errmsg)
{
	if(field_a.value!=field_b.value)
	{
		alert(errmsg);
		return false;
	}
	return true;
}

function isMinimum(field, minChar, errmsg)
{
	var String = field.value;
	if(String.length < minChar)
	{
		errorField(field, errmsg);
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////////////////////
// Toggle script
function toggle(id) {
	var label = "linkblock_" + id;
	var block = document.getElementById(label);
	if (typeof (block) == 'undefined') return;
	if (block.style.display == 'block') {
		block.style.display = 'none';
	} else {
		block.style.display = 'block';
	}
}

/////////////////////////////////////////////////////////////////////////////////
// Toggle script
function toggleShowAll() {
	var label = "linkblock_" + id;
	var block = document.getElementById(label);
	if (typeof (block) == 'undefined') return;
	if (block.style.display == 'block') {
		block.style.display = 'none';
	} else {
		block.style.display = 'block';
	}
}