﻿/******************************************
Functions to repopulate the calendar and the months depending on selected route
*******************************************/

function RerenderCalendar(ctCalendarID, cbRouteID)
{
     var cbRoute = document.getElementById(cbRouteID);
     
     if (cbRoute) {
        var RouteID = cbRoute.value;
        var lastDepartureDate = GetLastDepartureDate(RouteID);

        if (lastDepartureDate) {
            var maxYear = lastDepartureDate.split('-')[0];
            var maxMonth = lastDepartureDate.split('-')[1];
            var maxDay = lastDepartureDate.split('-')[2];

            SetMaxDateOnCalendar(ctCalendarID, maxYear, maxMonth, maxDay);   
            SetValueOnCalendar(ctCalendarID, maxYear, maxMonth, maxDay);   
         }
     }
}

function RerenderCalendarAndMonth(ctCalendarID, cbRouteID, cbMonthID)
{
     var cbRoute = document.getElementById(cbRouteID);
     
     if (cbRoute) {
        var RouteID = cbRoute.value
        var lastDepartureDate = GetLastDepartureDate(RouteID);

        if (lastDepartureDate) {
            var maxYear = lastDepartureDate.split('-')[0];
            var maxMonth = lastDepartureDate.split('-')[1];
            var maxDay = lastDepartureDate.split('-')[2];

            SetMaxDateOnCalendar(ctCalendarID, maxYear, maxMonth, maxDay);
            RerenderMonthCombo(cbMonthID, maxYear, maxMonth);       
        }
     }
 }

 function RerenderMonths(cbRouteID, cbMonthID) {
     var cbRoute = document.getElementById(cbRouteID);
     var cbMonth = document.getElementById(cbMonthID);

     if (cbRoute) {
         var RouteID = cbRoute.value
         var lastDepartureDate = GetLastDepartureDate(RouteID);

         if (lastDepartureDate) {
             var maxYear = lastDepartureDate.split('-')[0];
             var maxMonth = lastDepartureDate.split('-')[1];
             var maxDay = lastDepartureDate.split('-')[2];

             RerenderMonthComboLff(cbMonthID, maxYear, maxMonth);
         }
     }
 }

function GetNewDate(year, month, day){
    var newDate = new Date();
    newDate.setYear(year);
    newDate.setMonth(month);
    newDate.setDate(day);

    return newDate;
}

function SetValueOnCalendar(ctCalendarID, maxYear, maxMonth, maxDay){
    var ctCalendar = igdrp_getComboById(ctCalendarID);  
     if (ctCalendar) {
        var selectedDate = ctCalendar.getValue();
        var maxDate = ctCalendar.getMaxDate();
        if (selectedDate)
        {
            if ((selectedDate.getFullYear()  > maxDate.getFullYear()) 
                || (selectedDate.getFullYear() == maxDate.getFullYear() && selectedDate.getMonth() > maxDate.getMonth())
                || (selectedDate.getFullYear() == maxDate.getFullYear() && selectedDate.getMonth() == maxDate.getMonth() && selectedDate.getDate() > maxDate.getDate())) {
                ctCalendar.setValue(null);
            }
        }
    }
}

function SetMaxDateOnCalendar(ctCalendarID, maxYear, maxMonth, maxDay){
    maxMonth -= 1;
    var lastDate = GetNewDate(maxYear, maxMonth, maxDay);
    var ctCalendar = igdrp_getComboById(ctCalendarID);  
     if (ctCalendar) {
          ctCalendar.setMaxDate(lastDate); 
       }
}

function GetMaxDateOnCalendar(ctCalendarID){
    var ctCalendar = igdrp_getComboById(ctCalendarID);  
     if (ctCalendar) {
          return ctCalendar.getMaxDate(); 
       }
}

function SelectedDateHasPassedMaxDateOnCalender(ctCalendarID, selectedDate){
    var maxDate = GetMaxDateOnCalendar(ctCalendarID);
    if (maxDate && selectedDate){
        var maxDateMonth = maxDate.getMonth() + 1;
	    var selectedMonth = selectedDate.month;
        if ((selectedDate.year  > maxDate.getFullYear()) 
            || (selectedDate.year == maxDate.getFullYear() && selectedMonth > maxDateMonth)
            || (selectedDate.year == maxDate.getFullYear() && selectedMonth == maxDateMonth && selectedDate.day > maxDate.getDate())) 
	{
            return true;   
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}

function GetMonthsToRender(maxYear, maxMonth){
    var currentYear = GetCurrentYear();
    var currentMonth = GetCurrentMonth();
    var monthsInAYear = new Number(12);
    var mYear = new Number(maxYear);
    var mMonth = new Number(maxMonth);
    
    var monthsToRender = mYear - currentYear;
    monthsToRender *= monthsInAYear;
    monthsToRender += mMonth; 
    monthsToRender -= currentMonth;
    monthsToRender += 1;     
        
    return monthsToRender;
}

function GetCurrentMonth() {
    var currentDate = new Date();
    var currentMonth = currentDate.getMonth();
    currentMonth +=1;
    
    return currentMonth;
}

function GetCurrentYear() {
    var currentDate = new Date();
    var currentYear = currentDate.getFullYear();    
    
    return currentYear;
}

function RerenderMonthCombo(cbMonthID, maxYear, maxMonth){
    var monthsToRender = GetMonthsToRender(maxYear, maxMonth)
    var yearToSet = GetCurrentYear();
    var monthToSet = GetCurrentMonth();
    var monthsInAYear = new Number(12);
    var cbMonth = document.getElementById(cbMonthID);
    
    if (cbMonth){
        var selectedValue = cbMonth.value;
        cbMonth.options.length = monthsToRender;

        for (i=0 ; i<monthsToRender; i++)
        {
            if (monthToSet > monthsInAYear)
            {
                monthToSet -= monthsInAYear
                yearToSet += 1
            }
            var key = yearToSet + '|' + monthToSet
            cbMonth.options[i].text = GetMonthName(monthToSet) + ' ' + yearToSet;
            cbMonth.options[i].value = key;
            if (selectedValue == key)
            {
                cbMonth.selectedIndex = i
            }
            monthToSet +=1;
        }
    }
}

function RerenderMonthComboLff(cbMonthID, maxYear, maxMonth) {
    var monthsToRender = GetMonthsToRender(maxYear, maxMonth)
    var yearToSet = GetCurrentYear();
    var monthToSet = GetCurrentMonth();
    var monthsInAYear = new Number(12);
    var cbMonth = document.getElementById(cbMonthID);

    if (cbMonth) {
        var selectedValue = cbMonth.value;
        var emptyText = cbMonth.options[0].text;
        cbMonth.options.length = 0;
        cbMonth.options.length = monthsToRender + 1;
        cbMonth.options[0].text = emptyText;
        cbMonth.options[0].value = '';
        for (i = 1; i < monthsToRender+1; i++) {
            if (monthToSet > monthsInAYear) {
                monthToSet -= monthsInAYear
                yearToSet += 1
            }
            var key = yearToSet + '-' + monthToSet + '-01'
            cbMonth.options[i].text = GetMonthName(monthToSet) + ' ' + yearToSet;
            cbMonth.options[i].value = key;
            if (selectedValue == key) {
                cbMonth.selectedIndex = i
            }
            monthToSet += 1;
        }
    }
}


