﻿var g_Calendar=null;
var g_currenttext=null;
var g_divMessage=null;
var g_nType = 1;
var g_strInvalidChars = "0123456789-:.";
var g_strErrorMessage = 'Ongeldige waarde';
var ValidateHHMM=1;
var ValidateDDMM = 2;
var ValidateDDMMYYYY = 3;
var ValidateGetal = 4;
var ValidateBedrag = 5;

function ClearErrorMessageDiv()
{
if(g_divMessage!=null)
 {
	g_divMessage.innerHTML='';
	g_divMessage = null;
 }	
}
function OnFinishCalendar()
{
	ClearErrorMessageDiv();
	var divstar1=document.getElementById('divstar1');
	if(divstar1)
	{
		divstar1.innerHTML='';
	}
}

function ShowQueryCalendar(txtDate,bNoYear,strCloseImg)
{
            var retval="";
            var calendardiv=document.createElement("DIV");
            g_Calendar=new Calendar(txtDate,strCloseImg);
            g_Calendar.onFinish=OnFinishCalendar;
            if(bNoYear)
				g_Calendar.setNoYear();
            var div=g_Calendar.getCalendarDiv();
            txtDate.parentNode.appendChild(div);
            div.style.position='absolute';
            var elem=div.parentNode;
            var nTop =3;
            var nLeft=2;
            while(elem != null && elem.parentNode!=null)
            {
                        if(elem.tagName!='TR')
                        {
                                    nTop += elem.offsetTop;
                                    nLeft += elem.offsetLeft;
                        }
                        elem=elem.parentNode;
            }
            div.style.left=nLeft;
            div.style.top= nTop;
//      try{
//			centerPopWin(div.style.offsetWidth,div.style.offsetHeight,div);			
//			}catch(e){}
			div.style.top = nTop;
			g_Calendar.adjustIFrame();
}


function DateValidator(nType,strFormat)
{
	this.m_nType = nType;
	this.m_strFormat = strFormat;
}
DateValidator.prototype.validate = function(txt)
{
	var bRetval;
	switch(this.m_nType)
	{
		case ValidateHHMM:
			bRetval = this.validatetime(txt);
			break;
		case ValidateDDMM:
			bRetval = this.validateDDMM(txt);
			break;
		case ValidateDDMMYYYY:
			bRetval = this.validateDDMMYYYY(txt);
			break;	
		case ValidateGetal:
			bRetval = this.validateGetal(txt);
			break;		
		case ValidateBedrag:
			bRetval = this.validateBedrag(txt);
			break;
	}
	if(bRetval != true)
	{
		
	}
	return bRetval;
}

DateValidator.prototype.validateBedrag = function(txt)
{
	if(txt.value.length == 0)return true;
	var bGood = /^\d+(\.\d{2})?$/.test(txt.value);
	return bGood;
}

DateValidator.prototype.validateGetal = function(txt)
{
	if(txt.value.length == 0)return true;
	var bGood = /^\d+$/.test(txt.value);
	return bGood;
}
DateValidator.prototype.validatetime= function (txt)
{
if(txt.value.length==0)return true;
var bGood = /^([01]?[0-9]|[2][0-3])(:[0-5][0-9])$/.test(txt.value);
return bGood;
}

DateValidator.prototype.validateDDMMYYYY = function (txt)
{
var strValue=txt.value;
if(strValue.length==0)
	return true;
while (strValue.substring(strValue.length-1,strValue.length) == ' ') strValue = strValue.substring(0,strValue.length-1);
var bGood = /^((([0-2]?[0-9])|(3?[0-1]))-((0?[0-9])|(1?[0-2]))-[0-2]\d{3})$/.test(strValue);
if(!bGood)
{
	return false;
}	
//it looks ok so now let's test it on a Date object
var parts=strValue.split(' ');
var entries=parts[0].split('-');
var iLength=entries.length;
for(var i2=0; i2 < iLength;i2++)
{
	if(entries[i2].charAt(0) == '0')
	{
		entries[i2] = entries[i2].substr(1);
	}
}
var strMonth=entries[1];
var d=new Date();
d.setYear(parseInt(entries[2]));
d.setMonth(parseInt(strMonth) - 1);
d.setDate(parseInt(entries[0]));
var thedate=d.getDate();
if(thedate != parseInt(entries[0]))
{
	if(parseInt(entries[0])==29 && parseInt(entries[2]) % 4 == 0)
	  return true;
	return false;
}
return true;
}

DateValidator.prototype.validateDDMM = function (txt)
{
	var strValue=txt.value;
	if(strValue.length==0)
	return true;
	var bGood = /^(([0-2]?[0-9])|(3?[0-1]))-((0?[0-9])|(1?[0-2]))$/.test(strValue);
	if(!bGood)
	{
		return false;
	}	
//it looks ok so now let's test it on a Date object
var entries=strValue.split('-');
for(var i2=0; i2 < iLength;i2++)
{
	if(entries[i2].charAt(0) == '0')
	{
		entries[i2] = entries[i2].substr(1);
	}
}
var d=new Date();
d.setDate(entries[0]);
d.setMonth(parseInt(entries[1]) - 1);
if(d.getDate() != parseInt(entries[0]))
{
	if(parseInt(entries[0])==29 && new Date().getYear() % 4 == 0)
	  return true;
	return false;
}
	return true;
}

function cancelInvalidChars(keyCode, key) 
{
//clear errormessagefield.
   var bCheck= g_strInvalidChars.indexOf(key) == -1;
  if(g_event.which == 0)//arrows/back/delete etc.
	return true;
  if(g_event.which == 8)
	return true;
	ClearErrorMessageDiv();
  var bRetval = { cancelKey: bCheck };
  if(bCheck && g_event != null)
  {
	g_event.cancelBubble=true;g_event.returnValue=false;
  }
  return bRetval;
}

function DoValidate(txt,nType)
{
	var strFormat;
	switch(nType)
	{
		case ValidateHHMM:
			strFormat = 'uu:mm';
			break;
		case ValidateDDMM:
			strFormat = 'dd-mm';
			break;
		case ValidateDDMMYYYY:
			strFormat = 'dd-mm-yyyy';
			break;
		case ValidateGetal:
			strFormat = 'Alleen cijfers'
			break;
		case ValidateBedrag:
			strFormat = 'XX,xx bv 12,95';
			break;
		default:
			return;
	}
	var dv= new DateValidator(nType);
	var bSuccess = dv.validate(txt);
	if(!bSuccess)
	{
		g_divMessage=document.getElementById('divMessage');
		g_divMessage.innerHTML='<font color="red">' + g_strErrorMessage + ' ( ' + strFormat + ' )</font>';
		var strStar = '<font color="red">*</font>';
		switch(txt.getAttribute('name2'))
		{
			case 'start1':
				document.getElementById('divstar1').innerHTML=strStar;
				break;
			case 'start2':
				document.getElementById('divstar2').innerHTML=strStar;
				break;
			case 'end1':
				document.getElementById('divstarend1').innerHTML=strStar;
				break;
			case 'end2':
				document.getElementById('divstarend2').innerHTML=strStar;
				break;
		}		
	}
	else
	{
		ClearErrorMessageDiv();
		switch(txt.getAttribute('name2'))
		{
			case 'start1':
				document.getElementById('divstar1').innerHTML='';
				break;
			case 'start2':
				document.getElementById('divstar2').innerHTML='';
				break;
			case 'end1':
				document.getElementById('divstarend1').innerHTML='';
				break;
			case 'end2':
				document.getElementById('divstarend2').innerHTML='';
				break;
		}		
	}
	if(!bSuccess)
	{
		g_currenttext = txt;
		setTimeout('g_currenttext.focus()',250);
	}
	return bSuccess;
}

