// JavaScript Document
function handleSelect(type,args,obj) {
    var dates = args[0];
    var date = dates[0];
    var year = date[0], month = date[1], day = date[2];

    var objIDArray = obj.id.split( '_' );
    var id = objIDArray[3];
    var datatype = objIDArray[1];
    var base = objIDArray[0];

    var txtYear = document.getElementsByName( base + '_' + datatype + '_year_' + id );
    txtYear[0].value = year;

    var txtMonth = document.getElementsByName( base + '_' + datatype + '_month_' + id );
    txtMonth[0].value = month;

    var txtDay = document.getElementsByName( base + '_' + datatype + '_day_' + id );
    txtDay[0].value = day;

    if ( base == 'arrival' )
    {
         var txtBase = 'departure';
         var txtYearDeparture = document.getElementsByName( txtBase + '_' + datatype + '_year_' + 'dep' );
         var txtMonthDeparture = document.getElementsByName( txtBase + '_' + datatype + '_month_' + 'dep' );
         var txtDayDeparture = document.getElementsByName( txtBase + '_' + datatype + '_day_' + 'dep' );

	 var dateDeparture = new Date();
	 if ( parseInt( txtYearDeparture[0].value ) == txtYearDeparture[0].value &&
              parseInt( txtMonthDeparture[0].value ) == txtMonthDeparture[0].value &&
              parseInt( txtDayDeparture[0].value ) == txtDayDeparture[0].value )
         {
	      dateDeparture.setYear( parseInt( txtYearDeparture[0].value ) );
              dateDeparture.setMonth( parseInt( txtMonthDeparture[0].value ) - 1 );
	      dateDeparture.setDate( parseInt( txtDayDeparture[0].value ) );
         }

	 var dateArrival = new Date();
	 dateArrival.setYear( txtYear[0].value );
	 dateArrival.setMonth( txtMonth[0].value - 1 );
	 dateArrival.setDate( txtDay[0].value );
	 if ( dateArrival.getTime() >= dateDeparture.getTime() )
         {
	     dateArrival.setDate( dateArrival.getDate() + 1 );
             txtYearDeparture[0].value = dateArrival.getFullYear();
             txtMonthDeparture[0].value = dateArrival.getMonth() + 1;
             txtDayDeparture[0].value = dateArrival.getDate();
         }
    }
    if ( document.getElementById( 'departure_datetime_cal_container_dep' ).style.display == 'block' )
    {
        showDatePicker( 'departure', 'dep', 'datetime' );
    }
    window['cal'+id].hide();
}

function showDatePicker( base, id, datatype ) {
    var calIconID = base + '_' + datatype + '_cal_' + id;
    var calContainerID = base + '_' + datatype + '_cal_container_' + id;
    var calContainer = document.getElementById( calContainerID );
    var xy = YAHOO.util.Dom.getXY( calIconID );

//    calContainer.style.left = ( xy[0] + 26 ) + 'px';
//    calContainer.style.top = ( xy[1] + 30 ) + 'px';
    calContainer.style.display = 'block';

    var currentDate = new Date(); 
    var minDate = new Date(); 
    minDate.setDate( currentDate.getDate() );
    var txtYear = '';
    var txtMonth = '';
    var txtDay = '';

    txtYear = document.getElementsByName( base + '_' + datatype + '_year_' + id );
    txtMonth = document.getElementsByName( base + '_' + datatype + '_month_' + id );
    txtDay = document.getElementsByName( base + '_' + datatype + '_day_' + id );

    var txtBase = base;
    var changeDeparture = false;
    var selectedDate = '';
    var pageDate = new Date(); 
    if ( txtMonth[0].value == parseInt( txtMonth[0].value ) &&
         ( txtMonth[0].value >= currentDate.getMonth() || txtYear[0].value > currentDate.getFullYear() ) )
    {   
	pageDate.setMonth( txtMonth[0].value - 1 ); 
    }

    if ( txtYear[0].value == parseInt( txtYear[0].value ) &&
         txtYear[0].value >= currentDate.getFullYear() )
    {
        pageDate.setYear( txtYear[0].value );
    }

    if ( txtYear[0].value == parseInt( txtYear[0].value ) &&
         txtMonth[0].value == parseInt( txtMonth[0].value ) &&
         txtDay[0].value == parseInt( txtDay[0].value ) )
    {
         selectedDate = txtMonth[0].value + '/' + ( parseInt( txtDay[0].value ) )  + '/' + txtYear[0].value;
    }

    if ( base == 'departure' )
    {
         txtBase = 'arrival';
         var txtYearArrival = document.getElementsByName( txtBase + '_' + datatype + '_year_' + 'arr' );
         var txtMonthArrival = document.getElementsByName( txtBase + '_' + datatype + '_month_' + 'arr' );
         var txtDayArrival = document.getElementsByName( txtBase + '_' + datatype + '_day_' + 'arr' );

	 var dateArrival = new Date();
	 if ( txtYearArrival[0].value == parseInt( txtYearArrival[0].value ) &&
              txtMonthArrival[0].value == parseInt( txtMonthArrival[0].value ) &&
              txtDayArrival[0].value == parseInt( txtDayArrival[0].value ) )
	 {
             dateArrival.setYear( txtYearArrival[0].value );
             dateArrival.setMonth( txtMonthArrival[0].value - 1 );
             dateArrival.setDate( txtDayArrival[0].value );
         }
	 else
         {
             dateArrival.setDate( dateArrival.getDate() + 1 );
         }
	 var dateDeparture = new Date();
	 dateDeparture.setYear( txtYear[0].value );
	 dateDeparture.setMonth( txtMonth[0].value - 1 );
	 dateDeparture.setDate( txtDay[0].value );
	 dateArrival.setDate( dateArrival.getDate() + 1 );

         if ( dateDeparture.getTime() < dateArrival.getTime() )
         {
                dateDeparture.setYear( dateArrival.getFullYear() );
                dateDeparture.setMonth( dateArrival.getMonth() );
                dateDeparture.setDate( parseInt( dateArrival.getDate() ) + 1 );

		pageDate.setYear( dateArrival.getFullYear() );
		pageDate.setMonth( dateArrival.getMonth() );

                selectedDate = dateArrival.getMonth() + '/' + dateArrival.getDate()  + '/' + dateArrival.getFullYear();
         }

         minDate.setYear( dateArrival.getFullYear() );
         minDate.setMonth( dateArrival.getMonth() );
         minDate.setDate( dateArrival.getDate() );

         changeDeparture = true;
    }
    else if ( document.getElementById( 'departure_datetime_cal_container_dep' ).style.display == 'block' )
    {
        showDatePicker( 'departure', 'dep', 'datetime' );
    }


    window['cal'+id] = new YAHOO.widget.Calendar( base + '_' + datatype + '_cal_' + id , calContainerID, { close: true,
                                                                                                           minDate: minDate,
                                                                                                           pageDate: pageDate,
                                                                                                           selected: selectedDate,
                                                                                                           LOCALE_WEEKDAYS: "medium",
                                                                                                           START_WEEKDAY: 1 } );
    window['cal'+id].cfg.setProperty("MONTHS_SHORT",   ["Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Des"]);
    window['cal'+id].cfg.setProperty("MONTHS_LONG",    ["Januar", "Februar", "Mars", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Desember"]);  
    window['cal'+id].cfg.setProperty("WEEKDAYS_1CHAR", ["S", "M", "D", "M", "D", "F", "S"]);  
    window['cal'+id].cfg.setProperty("WEEKDAYS_SHORT", ["S\u00F8", "Ma", "Ti", "On", "To", "Fr", "L\u00F8"]);  
    window['cal'+id].cfg.setProperty("WEEKDAYS_MEDIUM",["S\u00F8n", "Man", "Tir", "Ons", "Tor", "Fre", "L\u00F8r"]);  
    window['cal'+id].cfg.setProperty("WEEKDAYS_LONG",  ["S\u00F8ndag", "Mandag", "Tirsdag", "Onsdag", "Torsdag", "Fredag", "L\u00F8rdag"]);  
    window['cal'+id].render();
    window['cal'+id].selectEvent.subscribe( handleSelect, window['cal'+id], true );
}