    var EndDate;
    
    
    function GetDisplayDate(date)
    {
	    if (date != null)
		    return date.getDate()+'.'+(date.getMonth()+1)+'.'+date.getFullYear();

	    return ''
    }       
    
    function ParseDate(date)
    {
	    if (date != null && date != '' && date != 'null'){
		    var strYear;
		    var strMonth;
		    var strDay;
		    if (date.indexOf('-') != -1){
			    var strYear = date.substring(0, 4);
			    var strMonth = date.substring(5,7);
			    var strDay = date.substring(8,10);
		    }else if (date.indexOf('.') != -1){	
			    // 2007-05-04 [KON] --> Substring-Methode hier war fehlerhaft
			    //                  --> Format: 19.5.2007 führt zu falschem Ergebnis (Monate MÜSSEN zwei Stellen haben, zB 19.05.2007)
			    var dtInfo = date.split(".");
			    var strDay = dtInfo[0];//date.substring(0,2);
			    var strMonth = dtInfo[1];//date.substring(3,5);
			    var strYear = dtInfo[2];//date.substring(6, 10);
		    }
		    return new Date(parseInt(strYear, 10), parseInt(strMonth, 10)-1, parseInt(strDay, 10));
	    }
	    return null;
    }       

    function calcDifference(begin, end)
    {
	    if (begin != null && end != null){
		    //Set 1 week in milliseconds
		    var one_day=1000*60*60*24;
		    var one_week=one_day * 7;
    		
		    //Calculate difference btw the two dates, and convert to days
		    var iEnd=end.getTime();
		    var iBegin=begin.getTime();
		    var iWeek=one_week;
		    var iDiff=iEnd-iBegin;
		    var iResult=iDiff/iWeek;
		    iResult=Math.ceil(iResult);
    		
		    //HIR 11.08.06: Zahlen zu gross, deshalb Rundungsfehler bei 28.10 - 11.11
		    //Zahlen für Berechnung verkleinert, geht jetzt
		    iEnd=Math.round(end.getTime()/one_day);
		    iBegin=Math.round(begin.getTime()/one_day);
		    iWeek=7;
		    iDiff=iEnd-iBegin;
    		
		    iResult=iDiff/iWeek;
		    iResult=Math.ceil(iResult);
		    //alert("Differenz: " + iResult);
		    return iResult;
    				
		    //return Math.ceil((end.getTime()-begin.getTime())/(one_week));
	    }
	    return 0;
    }
    
  function setDates(strBeginDate, strEndDate) 
    {	
		document.forms[0].s_beginDate.value=strBeginDate;
        setEndDate(strEndDate);		    
        
        var oIfrm = document.getElementsByName("frmCalEnd")[0];
	    var href = "Calendar.aspx?IsDepartureCalendar=true&Language="+lang+"&class=ContentBG&showPast=false&BeginDuration="+beginDuration+"&EndDuration="+endDuration+"&selectedDate="+strEndDate+"&hiddenPath=self.parent.setEndDate()";
	    oIfrm.src = href;		    
    }
    
    function setBeginDate(strBeginDate) 
    {
	    document.forms[0].s_beginDate.value=strBeginDate;
	    var myDate = ParseDate(strBeginDate);
	    
	    if (myDate != null)
	    {
//	        if(myDate.getDate() >= 17 && myDate.getMonth()==11) 
//		        myDate.setDate(myDate.getDate()+14);
//	        else
		        myDate.setDate(myDate.getDate()+7);
        }

        var strEnd = GetDisplayDate(myDate);        
        var oIfrm = document.getElementsByName("frmCalEnd")[0];
	    var href = "Calendar.aspx?IsDepartureCalendar=true&Language="+lang+"&class=ContentBG&showPast=false&BeginDuration="+beginDuration+"&EndDuration="+endDuration+"&selectedDate="+strEnd+"&hiddenPath=self.parent.setEndDate()";
	    oIfrm.src = href;

        setEndDate(GetDisplayDate(myDate));
    }        
    
    function setEndDate(strEndDate) 
    {
	    EndDate=strEndDate;
	    UpdateJourneyTime();
    }
    
    function UpdateJourneyTime()
    {
        var dtBeginDate = ParseDate(document.forms[0].s_beginDate.value);
        var dtEndDate = ParseDate(EndDate);
        var diff = calcDifference(dtBeginDate, dtEndDate);
        document.forms[0].EndBeforeBegin.style.display='none';
        document.forms[0].InvalidDuration.style.display='none';
        document.forms[0].NoDeparture.style.display='none';
        document.forms[0].s_duration.value='';
        if (dtEndDate != null && dtBeginDate != null){
	        if (diff <= 0)
	        {
		        document.forms[0].EndBeforeBegin.style.display='';
		        return;
	        }else if (diff > 3){
		        document.forms[0].InvalidDuration.style.display='';
		        return;
	        }
        }
        
        if (dtBeginDate==null && document.forms[0].NoDeparture != null)
            document.forms[0].NoDeparture.style.display='';
         
        if (diff > 0 && diff < 4)
	        document.forms[0].s_duration.value=diff;
    }

    function checkBookingSubmit()
    {
        var doSubmit = false;
        var persValid = false;
    
	    var begDate = document.forms[0].s_beginDate.value;
	    if (ParseDate(begDate) != null || EndDate!=null){
		    var selDur = document.forms[0].s_duration.value;
		    doSubmit = (selDur != null && selDur != '');
	    }
	    
	    
	    if (!doSubmit)
	    {
		    if (document.forms[0].EndBeforeBegin.style.display=='none' && 
			    document.forms[0].InvalidDuration.style.display=='none')
			    document.forms[0].NoDeparture.style.display='';
		    else		
			    document.forms[0].NoDeparture.style.display='none';
	    } 
	    else
	    {
	        var selPers = document.forms[0].s_Pers.options[document.forms[0].s_Pers.selectedIndex].value;
	        persValid = (selPers != '-1');
	
	        if (document.forms[0].PersInvalid != null)
	        {
	            if (!persValid)	
	            {
		            document.forms[0].PersInvalid.style.display='';
		        }
	            else		
	            {
		            document.forms[0].PersInvalid.style.display='none';
                }		            
            }
	    }
    
        return doSubmit && persValid;
    }   