/*
	================================================================================
	= Naam             : Object Functions 2.0                                      =
	= Programmeur      : Rob Timmers                                               =
	= Laatst gewijzigd : 24 september 2006                                         =
	= Omschrijving     : Functies om de standaard Form elementen te manipuleren    =
	= Afhankelijkheden : string_functions.js                                       =
	================================================================================

	================================================================================
	= Overzicht functies per object                                                =
	================================================================================
	
	Algemene functies
	=================
	
	ObjectSetFocus(strIDObject)
	
	
	Text
	====
	
	TextValidateIsEmpty(strIDText, blnTrimValue, blnUpdateText, blnMustEnter, blnShowAlerts, strAlertMessage, blnBackToText)
	TextIsEmpty(strIDText, blnTrimValue, blnUpdateText)
	TextValue(strIDText, blnTrimValue)
	TextSetValue(strIDText, strValue)
	TextClearValue(strIDText)
	TextEnable(strIDText)
	TextDisable(strIDText)
	
	
	Checkbox
	========
	
	CheckboxIsChecked(strIDCheckbox)
	CheckboxClearCheck(strIDCheckbox)
	CheckboxEnable(strIDCheckbox)
	CheckboxDisable(strIDCheckbox)
	
	Radio
	=====
	
	RadioGroupValidateIsChecked(strIDRadioGroup, blnMustEnter, blnShowAlerts, strAlertMessage, blnBackToRadioGroup)
	RadioGroupIsChecked(strIDRadioGroup)
	RadioGroupValue(strIDRadioGroup, strNoChoiceValue)
	RadioGroupClearChecks(strRadioGroup)
	
	
	Select
	======
	
	SelectValidateIsSelected(strIDSelect, blnMustEnter, strEmptyValue, blnShowAlerts, strAlertMessage, blnBackToSelect)
	SelectIsSelected(strIDSelect, strEmptyValue)
	SelectSelectByValue(strIDSelect, strValue)
	SelectSelectByLabel(strIDSelect, strLabel)
	SelectValue(strIDSelect)
	SelectClearOptions(strIDSelect)
*/

//	================================================================================
//	= Algemene functies                                                            =
//	================================================================================

function ObjectSetFocus(strIDObject)
{
	var l_objObject = document.getElementById(strIDObject);

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objObject) == null) {alert("Bad Object Reference: " + strIDObject + "\n\nFunction: ObjectSetFocus"); return (false);}

	// Het object selecteren.
	l_objObject.focus();
}

//	================================================================================
//	= Text fields functies                                                         =
//	================================================================================

function TextValidateIsEmpty(strIDText, blnTrimValue, blnUpdateText, blnMustEnter, blnShowAlerts, strAlertMessage, blnBackToText)
{
	var l_objText = document.getElementById(strIDText);
	var l_strTextValue = new String();
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextValidateIsEmpty"); return (false);}
	// De waarde van de input text converten naar een string.
	l_strTextValue = l_objText.value.toString();
	// Indien gewenst worden spaties voor en na de waarde van de input text verwijderd.
	if (blnTrimValue)
	{
		l_strTextValue = Trim(l_strTextValue);
		// Indien gewenst de waarde in de input text vervangen door de nieuwe waarde.
		if (blnUpdateText) l_objText.value = l_strTextValue;
	}
	// Controleren of de waarde een lege string is.
	if (l_strTextValue.length == 0)
	{
		if (blnMustEnter)
		{
			// Indien gewenst de gebruiker het opgegeven bericht tonen.
			if (blnShowAlerts) alert(strAlertMessage);
			// Indien gewenst de input text (weer) selecteren.
			if (blnBackToText) l_objText.focus();
			// De waarde is een lege string.
			return (true);
		}
		else
			return (false);
	}
	else
		// De waarde is geen lege string.
		return (false);
}

function TextIsEmpty(strIDText, blnTrimValue, blnUpdateText)
{
	var l_objText = document.getElementById(strIDText);
	var l_strTextValue = new String();
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextIsEmpty"); return (false);}
	// De waarde van de input text converten naar een string.
	l_strTextValue = l_objText.value.toString();
	// Indien gewenst worden spaties voor en na de waarde van de input text verwijderd.
	if (blnTrimValue)
	{
		l_strTextValue = Trim(l_strTextValue);
		// Indien gewenst de waarde in de input text vervangen door de nieuwe waarde.
		if (blnUpdateText) l_objText.value = l_strTextValue;
	}
	// Controleren of de waarde een lege string is.
	if (l_strTextValue.length == 0)
		// De waarde is een lege string.
		return (true);
	else
		// De waarde is geen lege string.
		return (false);
}

function TextValue(strIDText, blnTrimValue)
{
	var l_objText = document.getElementById(strIDText);
	var l_strValue = new String();
							
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextValue"); return (false);}
				
	l_strValue = l_objText.value.toString();
	if (blnTrimValue) l_strValue = Trim(l_strValue);
	return (l_strValue);
}

function TextSetValue(strIDText, strValue)
{
	var l_objText = document.getElementById(strIDText);
				
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextSetValue"); return (false);}

	l_objText.value = strValue;
}

function TextClearValue(strIDText)
{
	var l_objText = document.getElementById(strIDText);
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextClearValue"); return (false);}

	l_objText.value = ""
}

function TextEnable(strIDText)
{
	var l_objText = document.getElementById(strIDText);
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextEnable"); return (false);}

	l_objText.disabled = false;
}

function TextDisable(strIDText)
{
	var l_objText = document.getElementById(strIDText);
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objText) == null) {alert("Bad Object Reference: " + strIDText + "\n\nFunction: TextDisable"); return (false);}

	l_objText.disabled = true;
}


//	================================================================================
//	= Checkbox functies                                                            =
//	================================================================================

function CheckboxIsChecked(strIDCheckbox)
{
	var l_objCheckbox = document.getElementById(strIDCheckbox)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objCheckbox) == null) {alert("Bad Object Reference: " + strIDCheckbox + "\n\nFunction: CheckboxIsChecked"); return (false);}
	
	return (l_objCheckbox.checked);
}

function CheckboxSetCheck(strIDCheckbox)
{
	var l_objCheckbox = document.getElementById(strIDCheckbox)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objCheckbox) == null) {alert("Bad Object Reference: " + strIDCheckbox + "\n\nFunction: CheckboxSetCheck"); return (false);}
	
	if (!l_objCheckbox.checked) l_objCheckbox.checked = true;
}

function CheckboxClearCheck(strIDCheckbox)
{
	var l_objCheckbox = document.getElementById(strIDCheckbox)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objCheckbox) == null) {alert("Bad Object Reference: " + strIDCheckbox + "\n\nFunction: CheckboxClearCheck"); return (false);}
	
	if (l_objCheckbox.checked) l_objCheckbox.checked = false;
}

function CheckboxEnable(strIDCheckbox)
{
	var l_objCheckbox = document.getElementById(strIDCheckbox)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objCheckbox) == null) {alert("Bad Object Reference: " + strIDCheckbox + "\n\nFunction: CheckboxEnable"); return (false);}
	
	l_objCheckbox.disabled = false;
}

function CheckboxDisable(strIDCheckbox)
{
	var l_objCheckbox = document.getElementById(strIDCheckbox)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objCheckbox) == null) {alert("Bad Object Reference: " + strIDCheckbox + "\n\nFunction: CheckboxEnable"); return (false);}
	
	l_objCheckbox.disabled = true;
}

//	================================================================================
//	= Radio buttons functies                                                       =
//	================================================================================

function RadioGroupValidateIsChecked(strIDRadioGroup, blnMustEnter, blnShowAlerts, strAlertMessage, blnBackToRadioGroup)
{
	var l_objRadioGroup = document.getElementsByName(strIDRadioGroup)
	
	// Controleren of er objecten zijn die de opgegeven naam hebben
	if (l_objRadioGroup.length > 0)
	{
		for (var i = 0; i < l_objRadioGroup.length; i++)
		{
			// Controleren of het element een radio button is.
			if (l_objRadioGroup.item(i).tagName.toUpperCase() == "INPUT" && l_objRadioGroup.item(i).type.toUpperCase() == "RADIO")
			{
				// Indien de radio button is aangevinkt dit teruggeven.
				if (l_objRadioGroup.item(i).checked) return (true);
			}
		}
		
		if (blnMustEnter)
		{
			// Indien gewenst de gebruiker informeren met het opgegeven bericht.
			if (blnShowAlerts) alert(strAlertMessage);
			// Indien gewenst de eerst radio button uit de groep (weer) selecteren.
			if (blnBackToRadioGroup)
			{
				for (var i = 0; i < l_objRadioGroup.length; i++)
				{
					// Controleren of het element een radio button is.
					if (l_objRadioGroup.item(i).tagName.toUpperCase() == "INPUT" && l_objRadioGroup.item(i).type.toUpperCase() == "RADIO")
					{
						// De radio selecteren.
						l_objRadioGroup.item(i).focus();
						return (false);
					}
				}
				return (false);
			}
		}
		else
			return (true);
	}
	else
	{
		alert("Bad Object Reference: " + strIDRadioGroup + "\n\nFunction: RadioGroupValidateIsChecked");
		return (false);
	}
}

function RadioGroupIsChecked(strIDRadioGroup)
{
	var l_objRadioGroup = document.getElementsByName(strIDRadioGroup)
	
	// Controleren of er objecten zijn die de opgegeven naam hebben
	if (l_objRadioGroup.length > 0)
	{
		for (var i = 0; i < l_objRadioGroup.length; i++)
		{
			// Controleren of het element een radio button is.
			if (l_objRadioGroup.item(i).tagName.toUpperCase() == "INPUT" && l_objRadioGroup.item(i).type.toUpperCase() == "RADIO")
			{
				// Indien de radio button is aangevinkt dit teruggeven.
				if (l_objRadioGroup.item(i).checked) return (true);
			}
		}
		// Indien de radio button niet is aangevinkt dit teruggeven.
		return (false);
	}
	else
	{
		alert("Bad Object Reference: " + strIDRadioGroup + "\n\nFunction: RadioGroupIsChecked");
		return (false);
	}
}

function RadioGroupValue(strIDRadioGroup, strNoChoiceValue)
{
	var l_objRadioGroup = document.getElementsByName(strIDRadioGroup)
	
	// Controleren of er objecten zijn die de opgegeven naam hebben
	if (l_objRadioGroup.length > 0)
	{
		for (var i = 0; i < l_objRadioGroup.length; i++)
		{
			// Controleren of het element een radio button is.
			if (l_objRadioGroup.item(i).tagName.toUpperCase() == "INPUT" && l_objRadioGroup.item(i).type.toUpperCase() == "RADIO")
			{
				// Indien de radio button is aangevinkt de waarde hiervan teruggeven.
				if (l_objRadioGroup.item(i).checked) return (l_objRadioGroup.item(i).value);
			}
		}
		// Geen van de radiobuttons waren aangevinkt dus strNoChoiceValue teruggeven. 
		return (strNoChoiceValue);
	}
	else
	{
		alert("Bad Object Reference: " + strIDRadioGroup + "\n\nFunction: RadioGroupValue");
		return (strNoChoiceValue);
	}
}

function RadioGroupClearChecks(strRadioGroup)
{
	var l_objRadioGroup = document.getElementsByName(strIDRadioGroup)

	// Controleren of er objecten zijn die de opgegeven naam hebben
	if (l_objRadioGroup.length > 0)
	{
		for (var i = 0; i < l_objRadioGroup.length; i++)
		{
			// Controleren of het element een radio button is.
			if (l_objRadioGroup.item(i).tagName.toUpperCase() == "INPUT" && l_objRadioGroup.item(i).type.toUpperCase() == "RADIO")
			{
				if (l_objRadioGroup.item(i).checked) l_objRadioGroup.item(i).checked = false;
			}
		}
		return (true);
	}
	else
	{
		alert("Bad Object Reference: " + strIDRadioGroup + "\n\nFunction: RadioGroupClearChecks");
		return (false);
	}
}

//	================================================================================
//	= Select functies                                                              =
//	================================================================================

function SelectValidateIsSelected(strIDSelect, blnMustEnter, strEmptyValue, blnShowAlerts, strAlertMessage, blnBackToSelect)
{
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectValidateIsSelected"); return (false);}

	if (l_objSelect.value != strEmptyValue)
	{
		return (true);
	}
	else
	{
		if (blnMustEnter)
		{
			if (blnShowAlerts) alert(strAlertMessage);
			if (blnBackToSelect) l_objSelect.focus();
			return (false);
		}
		else
			return (true);
	}
}

function SelectIsSelected(strIDSelect, strEmptyValue)
{
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectIsSelected"); return (false);}
	
	return (l_objSelect.value != strEmptyValue);
}

function SelectSelectByValue(strIDSelect, strValue)
{
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectSelectByValue"); return (false);}
	// Controleren of het select element options heeft.
	if (l_objSelect.options.length > 0)
	{
		for (var i = 0; i < l_objSelect.options.length; i++)
		{
			// Indien de waarde van de option overeen komt met de opgegeven waarde deze selecteren.
			if (l_objSelect.options[i].value == strValue)
			{
				l_objSelect.options[i].selected = true;
				return (true);
			}
		}
		return (false);
	}
}

function SelectSelectByLabel(strIDSelect, strLabel)
{
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectSelectByLabel"); return (false);}

	if (l_objSelect.options.length > 0)
	{
		for (var i = 0; i < l_objSelect.options.length; i++)
		{
			// Indien de label van de option overeen komt met de opgegeven label deze selecteren.
			if (l_objSelect.options[i].text == strLabel)
			{
				l_objSelect.options[i].selected = true;
				return (true);
			}
		}
		return (false);
	}
}

function SelectValue(strIDSelect)
{
	var l_objSelect = document.getElementById(strIDSelect)

	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectValue"); return (false);}
	
	return (l_objSelect.value);
}

function SelectClearOptions(strIDSelect)
{
	var l_objSelect = document.getElementById(strIDSelect)
	var l_lngNumberOfOptions = new Number();
	
	// Controleren of de parameters verwijzen naar bestaande id's van objecten.
	if (eval(l_objSelect) == null) {alert("Bad Object Reference: " + strIDSelect + "\n\nFunction: SelectClearOptions"); return (false);}
	// Controleren of het select element options heeft.
	if (l_objSelect.length > 0)
	{
		l_lngNumberOfOptions = l_objSelect.length;
		// Alle options verwijderen.
		for (var i = 0; i < l_lngNumberOfOptions; i++)
		{
			l_objSelect.remove(0);
		}
	}
}


function checkboxgroup_getvalues(incheckboxgroup)
{
	var tempvalue = "";
				
	for (var i = 0; i < incheckboxgroup.length; i++)
	{
		if (incheckboxgroup[i].checked)
		{
			if (tempvalue != "") tempvalue = tempvalue + ", ";
			tempvalue = tempvalue + incheckboxgroup[i].value;
		}
	}
	return (tempvalue);
}
			
function checkboxgroup_validateminmaxchecked(incheckboxgroup, min, max, groupname, showalerts, backtogroup)
{
	var tempminimum = new Number();
	var tempmaximum = new Number();
	var tempnumberchecked = 0;
				
	if (!isNaN(min)) tempminimum = parseInt(min, 10); else tempminimum = -1;
	if (!isNaN(max)) tempmaximum = parseInt(max, 10); else tempmaximum = -1;
				
	for (var i = 0; i < incheckboxgroup.length; i++)
	{
		if (incheckboxgroup[i].checked) tempnumberchecked++;
	}
				
	if (tempminimum != -1)
	{
		if (tempnumberchecked < tempminimum)
		{
			if (showalerts)
			{
				if (tempminimum != 1)
					alert("Er moeten minimaal " + tempminimum + " keuzes bij ''" + groupname + "'' aangevinkt zijn.");
				else
					alert("Er moet minimaal 1 keuze bij ''" + groupname + "'' aangevinkt zijn.");
			}
			if (backtogroup) incheckboxgroup[0].focus();
			return (false);
		} 
	}
				
	if (tempmaximum != -1)
	{
		if (tempnumberchecked > tempmaximum)
		{
			if (showalerts)
			{
				if (tempmaximum != 1)
					alert("Er mogen maar " + tempmaximum + " keuzes bij ''" + groupname + "'' aangevinkt zijn.");
				else
					alert("Er mag maar 1 keuze bij ''" + groupname + "'' aangevinkt zijn.");
			}
			if (backtogroup) incheckboxgroup[0].focus();
			return (false);
		} 
	}
	return (true);
}
			
function checkboxgroup_isvaluechecked(incheckboxgroup, invalue)
{
	for (var i = 0; i < incheckboxgroup.length; i++)
	{
		if (incheckboxgroup[i].value == invalue) return (incheckboxgroup[i].checked);
	}
	return (false);
}

function textarea_counter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!
	{
		field.value = field.value.substring(0, maxlimit);
	}
	// otherwise, update 'characters left' counter
	else 
		countfield.value = maxlimit - field.value.length;
}

