function checkDate(year, month, day)
{
    var y = parseInt(year,10);
    var m = parseInt(month,10);
    var d = parseInt(day,10);
    
    var date = new Date(y, m-1, d);
    
    if(date.getDate() == d)
        return true;
    
    return false;
}

function getNearestValidDate(year, month, day)
{
    var y = parseInt(year,10);
    var m = parseInt(month,10);
    var d = parseInt(day,10);
    
    while(d >= 1)
    {
        if(checkDate(y, m, d))
        {
            return {year:y, month:m, day:d};
        }
        
        d--;
    }
    
    return false;
}

function updateDateInputs(y_id, m_id, d_id)
{
    var y = parseInt($(y_id).value,10);
    var m = parseInt($(m_id).value,10);
    var d = parseInt($(d_id).value,10);
    
    var vd = getNearestValidDate(y, m, d);
    
    y = vd.year;
    m = vd.month;
    d = vd.day;
    
    $(y_id).value = y < 10 ? '0'+y : y;
    $(m_id).value = m < 10 ? '0'+m : m;
    $(d_id).value = d < 10 ? '0'+d : d;
}

function updateFromToDateInputs(y_from_id, m_from_id, d_from_id, y_to_id, m_to_id, d_to_id)
{
    var y_from = parseInt($(y_from_id).value,10);
    var m_from = parseInt($(m_from_id).value,10);
    var d_from = parseInt($(d_from_id).value,10);
    
    var y_to   = parseInt($(y_to_id).value,10);
    var m_to   = parseInt($(m_to_id).value,10);
    var d_to   = parseInt($(d_to_id).value,10);
    
    var vd_from = getNearestValidDate(y_from, m_from, d_from);
    var vd_to   = getNearestValidDate(y_to, m_to, d_to);
    
    y_from = vd_from.year;  m_from = vd_from.month;  d_from = vd_from.day;
    y_to = vd_to.year;      m_to = vd_to.month;      d_to = vd_to.day;
    
    var date_from = new Date(y_from, m_from-1, d_from);
    var date_to   = new Date(y_to, m_to-1, d_to);
    
    if(date_from.getTime() > date_to.getTime())
    {
        var new_y_from = y_to;  var new_m_from = m_to;  var new_d_from = d_to;
        y_to = y_from;          m_to = m_from;          d_to = d_from;
        y_from = new_y_from;    m_from = new_m_from;    d_from = new_d_from;
    }
    
    $(y_from_id).value = y_from < 10 ? '0'+y_from : y_from;
    $(m_from_id).value = m_from < 10 ? '0'+m_from : m_from;
    $(d_from_id).value = d_from < 10 ? '0'+d_from : d_from;
    $(y_to_id).value   = y_to   < 10 ? '0'+y_to   : y_to;
    $(m_to_id).value   = m_to   < 10 ? '0'+m_to   : m_to;
    $(d_to_id).value   = d_to   < 10 ? '0'+d_to   : d_to;
}
