function ShowErrorLabel(errorlabel, text)
{
		errorlabel.innerHTML = text;
		errorlabel.style.visibility = 'visible';
}

function HideErrorLabel(errorlabel)
{
		errorlabel.style.visibility = 'hidden';
}

function IsEmpty(s)
{
	return ((s == null) || (s.length == 0));
}

function Validate(textbox, valcontrol)
{
		var bIsValid = true;
		var sErrorMessage = '';
		var sInputToValidate = textbox.value;
		
		var dMinValue = parseFloat(valcontrol.getAttribute('minvalue'));
		var dMaxValue = parseFloat(valcontrol.getAttribute('maxvalue'));
		var iMinLength = parseInt(valcontrol.getAttribute('minlength'));
		var iMaxLength = parseInt(valcontrol.getAttribute('maxlength'));
		
		if (valcontrol.getAttribute('validaterequired') == '1')
		{
			if(IsEmpty(sInputToValidate))
				bIsValid = false;
				
			if (!bIsValid)
      	sErrorMessage = 'Bitte füllen Sie das Feld aus.';
		}
		if (valcontrol.getAttribute('validatenumber') == '1' && bIsValid)
    {
    	if(isNaN(sInputToValidate.replace(',','.')))
    		bIsValid = false;
    		
    	if (!bIsValid)
      	sErrorMessage = 'Bitte geben Sie eine Zahl ein.';
    }
		if (valcontrol.getAttribute('validateinteger') == '1' && bIsValid)
    {
    	if(isNaN(sInputToValidate))
    		bIsValid = false;
    		
    	if (!bIsValid)
      	sErrorMessage = 'Bitte geben Sie eine Ganzzahl ein.';
    }
    if (valcontrol.getAttribute('validatedouble') == '1' && bIsValid)
    {
    	if(isNaN(sInputToValidate.replace(',','.')))
    		bIsValid = false;
    		
    	if (!bIsValid)
      	sErrorMessage = 'Bitte geben Sie eine Zahl ein.';
    }
    if (valcontrol.getAttribute('validaterange') == '1' && bIsValid)
    {
    	if(isNaN(sInputToValidate) || sInputToValidate <  dMinValue || sInputToValidate > dMaxValue)
    		bIsValid = false;
    	
    	if (!bIsValid)
      	sErrorMessage = 'Die Zahl muss zwischen ' + dMinValue + ' und ' + dMaxValue + ' liegen.';
    }
    if (valcontrol.getAttribute('validatelength') == '1' && bIsValid)
    {
    	if(sInputToValidate.length < iMinLength || sInputToValidate.length > iMaxLength)
    		bIsValid = false;
    		
			if (!bIsValid)
      	sErrorMessage = 'Die Eingabe muss zwischen ' + iMinLength + ' und ' + iMaxLength + ' liegen';
    }
    if (valcontrol.getAttribute('validateemail') == '1' && bIsValid)
    {
    	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			
			if (!filter.test(sInputToValidate))
				bIsValid = false;
		
    	if (!bIsValid)
      	sErrorMessage = 'Bitte geben Sie eine gültige E-Mail Adresse ein.';
    }
    if (valcontrol.getAttribute('validatedate') == '1' && bIsValid)
    {
    		if (!bIsValid)
        	sErrorMessage = 'Bitte geben Sie ein gültige Datum ein.';
    }
    if (valcontrol.getAttribute('customvalidatorNr') == '1' && bIsValid)
    {
        if (!bIsValid)
        	sErrorMessage = '';
    }
		
		if(!bIsValid)
		{
			valcontrol.isvalid = false;
			var errorlabel = valcontrol.parentNode.lastChild;
			valcontrol.onmouseover = function(){ShowErrorLabel(document.getElementById(errorlabel.id), sErrorMessage);};
			valcontrol.onmouseout = function(){HideErrorLabel(document.getElementById(errorlabel.id))};
			ValidatorUpdateDisplay(valcontrol);
			alert('Error: ' + sErrorMessage);
		}
		else
		{
			  valcontrol.isvalid = true;
        ValidatorUpdateDisplay(valcontrol);
		}		
}

function IsNumberKey(evt)
{
   var charCode = (evt.which) ? evt.which : event.keyCode
   if (charCode > 31 && (charCode < 48 || charCode > 57))
      return false;

   return true;
}

function IsFloatingNumberKey(evt)
{
   var charCode = (evt.which) ? evt.which : event.keyCode
   if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 46 && charCode != 44)
      return false;

   return true;
}

function ValidateExaminationDate(txtYear, txtMonth, txtDay, valControl, mode, sMinYear, sMinMonth, sMinDay, sMaxYear, sMaxMonth, sMaxDay)
{
	var bIsValid = true;
	var sErrorLabelMessage = "Bitte geben Sie ein gültiges Datum an.";
	var sPopupMessage = "";
	
	if(!IsEmpty(txtYear.value) && !IsEmpty(txtMonth.value) && !IsEmpty(txtDay.value))
	{
		var dtExamination = new Date(txtYear.value, txtMonth.value, txtDay.value, 0, 0, 0, 0);
		var dtMinDate = new Date(sMinYear, sMinMonth, sMinDay, 0, 0, 0, 0);
		var dtMaxDate = new Date(sMaxYear, sMaxMonth, sMaxDay, 0, 0, 0, 0);
	
		bIsValid = dtMinDate.getTime() <= dtExamination.getTime() && dtMaxDate.getTime() >= dtExamination.getTime();
	}
	
	if (mode == "-2")
		sPopupMessage = "Die Verlaufsbeobachtung -6 sollte 6 Monate (+/- 4 Wochen) vor Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "-1")
		sPopupMessage = "Die Verlaufsbeobachtung -3 sollte 3 Monate (+/- 4 Wochen) vor Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "1")
		sPopupMessage = "Die Verlaufsbeobachtung 1 sollte nach 3 Monaten (+/- 4 Wochen) ab Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "2")
		sPopupMessage = "Die Verlaufsbeobachtung 2 sollte nach 6 Monaten (+/- 4 Wochen) ab Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "3")
		sPopupMessage = "Die Verlaufsbeobachtung 3 sollte nach 12 Monaten (+/- 4 Wochen) ab Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "4")
		sPopupMessage = "Die Verlaufsbeobachtung 4 sollte nach 24 Monaten (+/- 4 Wochen) ab Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
	else if (mode == "5")
		sPopupMessage = "Die Verlaufsbeobachtung 5 sollte nach 36 Monaten (+/- 4 Wochen) ab Beginn der Eingangsuntersuchung durchgeführt werden. Sie haben ein Datum außerhalb dieses Zeitrahmens angegeben.";
			
	if(!bIsValid)
		{
			valControl.isvalid = false;
			var errorlabel = valControl.parentNode.lastChild;
			valControl.onmouseover = function(){ShowErrorLabel(document.getElementById(errorlabel.id), sErrorLabelMessage);};
			valControl.onmouseout = function(){HideErrorLabel(document.getElementById(errorlabel.id))};
			ValidatorUpdateDisplay(valControl);
			alert('Error: ' + sPopupMessage);
		}
		else
		{
			  valControl.isvalid = true;
        ValidatorUpdateDisplay(valControl);
		}		
		
}