    var UT_EMSG_DATE= "Bitte das Datum in der Form: TT.MM.JJJJ eingeben!";
    var UT_EMSG_DAY1= "Bitte geben Sie den Tag als ein- oder zweistellige Zahl an!";
    var UT_EMSG_DAY2= "Der Tag muss zwischen 1 und 31 liegen!";
    var UT_EMSG_YEAR1= "Bitte geben Sie das Jahr 4-stellig an!";
    var UT_EMSG_MONTH1= "Bitte geben Sie den Monat als ein- oder zweistellige Zahl an!" ;
    var UT_EMSG_MONTH2= "Der Monat liegt nicht zwischen 1 und 12!";
    var UT_EMSG_COMBI_JMD= "Der angegebene Tag ist für den Monat zu hoch!";
    var UT_EMSG_PLEASE_CR= "Bitte korrigieren Sie die Reisedaten!";
	var UT_EMSG_WRONG_DATE_ORDER= "Das Abreise-Datum liegt vor dem Anreise-Datum";
	var UT_EMSG_EQUAL_DATES= "Bei gleichem An- und Abreise-Datum brauchen Sie keine Übernachtung!";

    function ut_daysOfMonth(y,m)
    {
        days = 0;
                
        if(m == 2) 
        {
                    leapYear= false;

                    if( y%4==0 ) leapYear= true;
                    if( y%100==0 && y%400!=0 ) leapYear= false;

                    if( leapYear ) return 29;
            else                 return 28;
            }
            else if( m < 7) {
                        if( (m%2) == 1) return 31;
                        else return 30;
                }
                else {
                        if(m == 7) 
                                return 31;
                        else if ( (m%2) == 1) 
                                return 30;
                        else return 31;
                }
    }

	function ut_countDays(date1, date2)
	{
		var diff = 0;
		
		var t1 = _ut_getDay(date1.value);
		var t2 = _ut_getDay(date2.value);
			
		var j1 = _ut_getYear(date1.value);
		var j2 = _ut_getYear(date2.value);

		var m1 = _ut_getMonth(date1.value);
		var m2 = _ut_getMonth(date2.value);
		if ( (m1==m2) && (j1==j2) )
		{
			return (t2-t1);
		}
		else
		{
	
			while ( (m1!=m2 ) || (j1!=j2) )
			{
				diff = diff + ut_daysOfMonth(j1,m1);
				m1 = m1 +1;
				if (m1>12)
				{
					m1=1;
					j1++;
				}				
			}
			diff = diff + (t2-t1);
			return diff;
		}
	
		return -1;
	}

    function _ut_getDay(str)
    {
        var string = str.substring(0,str.indexOf(".",0));
        
        if ( (string.length<1) || (string.length>2) ) return 0;

        var iday = parseInt(string,10);
        
        if (isNaN(iday)) return -1;
        
        if ( (iday<1) || (iday>31) ) return -2;
        
        return iday;
    }

    function _ut_getYear(str)
    {
        var point2;
        for (point2=str.length; (str.charAt(point2)!=".") && (point2>0);point2--){}
        point2++;
        var string = str.substring(point2, str.length);
                
        var iyear = parseInt(string,10);
        
        if (isNaN(iyear)) return -1;
        
        if(iyear < 0)  return -1; 
        if(iyear < 99) return iyear + 2000; 
        if(iyear < 100) return iyear + 1900;    
        if(iyear < 1999) return 0;

        return iyear;
    }

    function _ut_getMonth(str)
    {
        var point1 = str.indexOf(".",0);
        var point2 = str.lastIndexOf(".",str.length);
        
        if (point1 == point2) return 0;
        
        var string = str.substring(point1+1,point2);
        
        if ( (string.length<1) || (string.length>2) ) return 0;

        var imon = parseInt(string,10);
        
        if (isNaN(imon)) return -1;
        
        if ( (imon<1) || (imon>12) ) return -2;
        
        return imon;
    }

    function ut_verifyDate(form)
    {

        var day = _ut_getDay(form.value);
        
        if (day == 0)
        {
            alert(UT_EMSG_DATE);
            form.focus();
            form.select();
            return false;
        }
        
        if (day == -1)
        {
            alert(UT_EMSG_DAY1);
            form.focus();
            form.select();
            return false;
        }
        
        if (day == -2)
        {
            alert(UT_EMSG_DAY2);
            form.focus();
            form.select();
            return false;
        }
                    
        var year = _ut_getYear(form.value);
        
        if (year == 0)
        {
            alert(UT_EMSG_YEAR1);
            form.focus();
            form.select();
            return false;
        }
        
        if (year==-1)
        {
            alert(UT_EMSG_DATE);
            form.focus();
            form.select();
            return false;
        }

        var month = _ut_getMonth(form.value);
        
        if (month==0)
        {
            alert(UT_EMSG_DATE);
            form.focus();
            form.select();
            return false;
        }
        
        if (month == -1)
        {
            alert(UT_EMSG_MONTH1);
            form.focus();
            form.select();
            return false;
        }
    
        if (month == -2)
        {
            alert(UT_EMSG_MONTH2);
            form.focus();
            form.select();
            return false;
        }
        
        var tdm = ut_daysOfMonth(year,month);
        if (day>tdm)
        {
            var str = new String();
            str+=UT_EMSG_COMBI_JMD;
            str+="\n";
            str+=UT_EMSG_PLEASE_CR;
            alert(str);
            form.focus();
            form.select();
            return false;
        }
                
        return true;
    }

	function ut_compareDates(date1,date2)
	{
		var year1 = _ut_getYear(date1.value);
		var year2 = _ut_getYear(date2.value);
		if (year1<year2) return -1;
		if (year1>year2) {
			return 1;
		}
		
		var month1 = _ut_getMonth(date1.value);
		var month2 = _ut_getMonth(date2.value);
		if (month1<month2) return -1;
		if (month1>month2) return 1;
		
		var day1 = _ut_getDay(date1.value);
		var day2 = _ut_getDay(date2.value);
		if (day1<day2 ) return -1 ;
		if (day1>day2) return 1;
		
		return 0;
	}
	
	function ut_verifyDates(date1, date2)
	{
		var date = new Date();
		var d = date.getDate();
		var m = date.getMonth() +1;
		var y = date.getYear() + 1900;
	    var today = d + "." + m + "." + y;

		if ( (date1.value.length>0) || (date2.value.length>0) )
		{
			if (date1.value.length==0)
			{		
			}
			else		
			if (ut_verifyDate(date1)==false)
			{
				return false;
			}

			if (date2.value.length==0)
			{		
			}
			else
			if (ut_verifyDate(date2)==false)
			{
				return false;
			}
			else
			if (ut_compareDates(date1,date2)==1)
			{
				alert(UT_EMSG_WRONG_DATE_ORDER);
				date1.focus();
				date1.select();
				return false;
			}
			else
			if (ut_compareDates(date1,date2)==0)
			{
				alert(UT_EMSG_EQUAL_DATES);
				date1.focus();
				date1.select();
				return false;
			}
		}

		return true;
	}

