// Disables previous days to today's date.
function dateStatusHandler( date ) 
{
    // Generate yesterday's date.
    today = new Date();
    day = today.getDate();
    day--;
    today.setDate(day);
    
    if ( date.getTime() < today.getTime() )
        return true;
    else
        return false;
}

// Disables previous days to arrival date.
function dateStatusHandler2( date ) 
{

    // Generate previous day to arrival date.
    myDate = new Date();
    
    year = document.getElementById('arrivalYear');
    myDate.setFullYear(year.value);
    
    month = document.getElementById('arrivalMonth');
    myDate.setMonth(month-1);

    day = document.getElementById('arrivalDay').value;

    myDate.setDate(day);
		if (	date.getFullYear() == myDate.getFullYear() &&
				date.getMonth() == myDate.getMonth() &&
				date.getDate() == myDate.getDate() )
			return "special";
    if ( date.getTime() < myDate.getTime() )
        return true;
    else
        return false;
}

// Disables previous days to arrival date.
function dateStatusHandler3( date ) 
{
    // Generate previous day to arrival date.
    myDate = new Date();
    
    myYear = document.getElementById('arrivalYear');
    myDate.setFullYear(myYear.value);
    
    myMonth = document.getElementById('arrivalMonth');
    myDate.setMonth(myMonth.value-1);

    dayTemp = document.getElementById('arrivalDay');
	day = dayTemp.value;

    myDate.setDate(day);

    if ( date.getTime() < myDate.getTime() )
        return true;
    else
        return false;
}

function dateStatusHandler4( date )
{
    return false;
}

// This function is used when change date through calendar.
function update( element, maxYear, daystoadd )
{
    if (!daystoadd)
        daystoadd = 2;
    
    // Assign value of datadesde field to arrival select fields.
    elem = document.getElementById('datadesde');
    str = elem.value;
    a = str.split("-");
    
    day = parseInt(a[0],10);
    month = parseInt(a[1],10);
    
    if ( month < 10 )
        month = '0'+month;
    
    year = parseInt(a[2]);
    
    elemArrivalDay = document.getElementById('arrivalDay');
    elemArrivalDay.value = day;
    
    elemArrivalMonth = document.getElementById('arrivalMonth');
    elemArrivalMonth.value = month;
    
    elemArrivalYear = document.getElementById('arrivalYear');
    elemArrivalYear.value = year;

    elemDepartDay = document.getElementById('departDay');
    elemDepartMonth = document.getElementById('departMonth');
    elemDepartYear = document.getElementById('departYear');
    
    elem2 = document.getElementById('datafins');
    
    // if updating the arrival date calendar
    if ( element == 'arrival' )
    {
        // Generate departure date (arrival date + daystoadd)
        myDate = new Date();
    
        for ( i = 1; i <= daystoadd; i++ )
            day++;
        
        myDate.setFullYear(year);
        myDate.setMonth(month-1);
        myDate.setDate(day);

        // In case user selects year further than the ones avaliables in 
        // the select box, set arrival date to 29-12 and departure date to
        // 31-12.
        if ( maxYear && myDate.getFullYear() > maxYear )
        {
            elemArrivalDay.value = 29;
            elemArrivalMonth.value = 12;
            elemArrivalYear.value = maxYear;
            elem.value = '29-12-'+maxYear;
            elemDepartDay.value = 31;
            elemDepartMonth.value = 12;
            elemDepartYear.value = maxYear;
            elem2.value = '31-12-'+maxYear;
        }
        else
        {   // Assign departure date to departure select fields.
            elemDepartYear.value = myDate.getFullYear();
        
            month = myDate.getMonth();
            month++;
            
            if (month < 10)
            month = '0'+month;

            elemDepartMonth.value = month;
            elemDepartDay.value = myDate.getDate();
    
            day = myDate.getDate();
            
            if (day < 10)
                day = '0'+day;
            
            // Assign departure date to datafins field.
            elem2.value = day + '-' + month + '-' + myDate.getFullYear();
        }
    }
    else
    {
        // If updating the departure calendar, assign the values to the select boxes.
        str= elem2.value;
        a=str.split("-");
    
        day=a[0];
        month=a[1];
        year=a[2];
        
        elemDepartDay.value = parseInt(day,10);
        elemDepartMonth.value = month;
        elemDepartYear.value = year;
    }
}

// Use this function when there must be a limit in the dates. It will add
// two days to the departure calendar.
// Ex. If the select Year dropdown menu is limited to year 2006 maximum,
// If the departure date will be later than the year limit it will be 
// set to last day allowed.
function updateCal1( )
{
    // Get maximum year shown in the year select menu.
    elem = document.getElementById('arrivalYear');
        
    update('arrival', elem.options[elem.length -1].value );
}

// Use this function when updating the departure calendar.
function updateCal2( )
{
    update('departure');
}

// Use this function when there must be a limit in the dates and when only 
// one day must be added in the departure calendar.
// Ex. If the select Year dropdown menu is limited to year 2006 maximum,
// If the departure date will be later than the year limit it will be 
// set to last day allowed.
function updateCal3( )
{
    // Get maximum year shown in the year select menu.
    elem = document.getElementById('arrivalYear');
        
    update('arrival', elem.options[elem.length -1].value, 1 );
}

// Is used when changing day through select menu.
function ChangeDay( element,maxYear,daystoadd, minimumToday )
{
    if (!daystoadd)
        daystoadd = 2;

    today = new Date();
    
    if (element == "arrival")
    {   
        elemArrivalDay = document.getElementById('arrivalDay');
        elemArrivalMonth = document.getElementById('arrivalMonth');
        elemArrivalYear = document.getElementById('arrivalYear');

        myDate = new Date();
        myDate.setFullYear( elemArrivalYear.value );
        myDate.setMonth( elemArrivalMonth.selectedIndex, elemArrivalDay.value );

		// Check if with selected month and day, we switch to next month.
		// If it's the case, go back to first day of selected month.
		if (myDate.getMonth() == elemArrivalMonth.selectedIndex+1)
			myDate.setMonth( elemArrivalMonth.selectedIndex, 1 );

        if ( minimumToday == true )
        {
            if ( myDate.getTime() < today.getTime() )
                myDate = today;
        }
        
        month = myDate.getMonth();
        month++;
        
        if (month < 10)
            month = '0'+month;
        
        day = myDate.getDate();
        
        if (day < 10)
            day = '0'+day;
        
        elem = document.getElementById('datadesde');
        elem.value = day + "-" + month + "-" + myDate.getFullYear();

        elemArrivalDay.value = myDate.getDate();
        elemArrivalMonth.value = month;
        elemArrivalYear.value = myDate.getFullYear();
    }
    
    elemDepartDay = document.getElementById('departDay');
    elemDepartMonth = document.getElementById('departMonth');
    elemDepartYear = document.getElementById('departYear');
    
    if ( element == "arrival" )
        myDate2 = myDate;
    else
    {
        myDate2 = new Date(elemDepartYear.value, elemDepartMonth.selectedIndex, elemDepartDay.value);
    }
    
    if (minimumToday == true)
    {
        if ( myDate2.getTime() < today.getTime() )
            myDate2 = today;
    }
    
    if ( element == "arrival" )
        day = myDate2.getDate()+daystoadd;
    else
        day = myDate2.getDate();
        
    myDate2.setDate( parseInt(day,10) );
    month = myDate2.getMonth();
    month++;
    
    elem2 = document.getElementById('datafins');
    
    day = myDate2.getDate();
    
    if (day < 10)
        day = '0'+day;
        
    if (month < 10)
        month = '0'+month;
    
    elem2.value = day + "-" + month + "-" + myDate2.getFullYear();

    elemDepartMonth.selectedIndex = myDate2.getMonth();
    elemDepartDay.value = myDate2.getDate();
    
    // In case user selects year further than the ones avaliables in 
    // the select box, set arrival date to 29-12 and departure date to
    // 31-12.
    if ( maxYear && myDate2.getFullYear() > elemDepartYear.options[elemDepartYear.length -1].value )
    {
        elemArrivalDay.value = 31 - daystoadd;
        elemArrivalMonth.value = 12;
        elemArrivalYear.value = elemDepartYear.options[elemDepartYear.length -1].value;
        elem.value = (31 - daystoadd)+'-12-'+elemDepartYear.options[elemDepartYear.length -1].value;
        elemDepartDay.value = 31;
        elemDepartMonth.value = 12;
        elemDepartYear.value = elemDepartYear.options[elemDepartYear.length -1].value;
        elem2.value = '31-12-'+elemDepartYear.options[elemDepartYear.length -1].value;
    }
    else
        elemDepartYear.value = myDate2.getFullYear();
}

function ChangeDayDashboard( element,maxYear,daystoadd, minimumToday )
{
    if (!daystoadd)
        daystoadd = 2;

    today = new Date();
    
    if (element == "arrival")
    {   
        elemArrivalDay = document.getElementById('arrivalDay');
        elemArrivalMonth = document.getElementById('arrivalMonth');
        elemArrivalYear = document.getElementById('arrivalYear');

        myDate = new Date();
        myDate.setFullYear( elemArrivalYear.value );
        myDate.setMonth( elemArrivalMonth.selectedIndex, elemArrivalDay.value );

		// Check if with selected month and day, we switch to next month.
		// If it's the case, go back to first day of selected month.
		if (myDate.getMonth() == elemArrivalMonth.selectedIndex+1)
			myDate.setMonth( elemArrivalMonth.selectedIndex, 1 );

        if ( minimumToday == true )
        {
            if ( myDate.getTime() < today.getTime() )
                myDate = today;
        }
        
        month = myDate.getMonth();
        month++;
        
        if (month < 10)
            month = '0'+month;
        
        day = myDate.getDate();
        
        if (day < 10)
            day = '0'+day;
        
        elem = document.getElementById('datadesde');
        elem.value = day + "-" + month + "-" + myDate.getFullYear();

        elemArrivalDay.value = myDate.getDate();
        elemArrivalMonth.value = month;
        elemArrivalYear.value = myDate.getFullYear();
    }
    
    elemDepartDay = document.getElementById('departDay');
    elemDepartMonth = document.getElementById('departMonth');
    elemDepartYear = document.getElementById('departYear');
    
    if ( element == "arrival" )
        myDate2 = myDate;
    else
    {
        myDate2 = new Date(elemDepartYear.value, elemDepartMonth.selectedIndex, elemDepartDay.value);
    }
    
    if (minimumToday == true)
    {
        if ( myDate2.getTime() < today.getTime() )
            myDate2 = today;
    }
    
    if ( element == "arrival" )
        day = myDate2.getDate()+daystoadd;
    else
        day = myDate2.getDate();
        
    myDate2.setDate( parseInt(day,10) );
    month = myDate2.getMonth();
    month++;
    
    elem2 = document.getElementById('datafins');
    
    day = myDate2.getDate();
    
    if (day < 10)
        day = '0'+day;
        
    if (month < 10)
        month = '0'+month;
}
