function validate_quarters()
{                                   
  var f = document.frmQuery;        
  if (!is_table_layout && !f.Q1.checked && !f.Q2.checked && !f.Q3.checked && !f.Q4.checked)
  {                                 
    alert(var_error_msg);
    return false;                   
  }                                 
  return true;                       
}   

function DaysInMonth(year, month)
{ 
  return (Date.UTC(month == 11 ? year + 1 : year, month == 11 ? 0 : month + 1, 1) - Date.UTC(year, month, 1)) / 86400000; 
}

function validate_date(frm) {
    if (parseInt(frm.elements['Year0'].value) < dt_range_start_year) {
        window.alert(var_error_msg_1);
        frm.elements['Year0'].value = dt_range_start_year;
        return false;
    }

    if (parseInt(frm.elements['Year1'].value) > dt_range_end_year) {
        window.alert(var_error_msg_1);
        frm.elements['Year1'].value = dt_range_end_year;
        return false;
    }

    switch (dt_range_freq) {
        case "D":
            {
                day0 = parseInt(frm.elements['Day0'].value);

                if (isNaN(day0) || (!isNaN(day0) && (day0 < 1 || day0 > 31))) {
                    frm.elements['Day0'].value = (new Date()).getDate();

                    window.alert(var_error_msg_2);
                    return false;
                }

                day1 = parseInt(frm.elements['Day1'].value);

                if (isNaN(day1) || (!isNaN(day1) && (day1 < 1 || day1 > 31))) {
                    frm.elements['Day1'].value = (new Date()).getDate();

                    window.alert(var_error_msg_2);
                    return false;
                }


                if (day0 < dt_range_start_day) {
                    alert(var_error_msg_1);
                    return false;
                }

                if (day1 > dt_range_end_day) {
                    alert(var_error_msg_1);
                    return false;
                }

                days_in_month = DaysInMonth(parseInt(frm.elements['Year0'].value), parseInt(frm.elements['month0'].value) - 1);

                if (day0 > days_in_month) {
                    frm.elements['Day0'].value = days_in_month;
                    window.alert(var_error_msg_2);
                    return false;
                }

                days_in_month = DaysInMonth(parseInt(frm.elements['Year1'].value), parseInt(frm.elements['month1'].value) - 1);

                if (day1 > days_in_month) {
                    frm.elements['Day1'].value = days_in_month;
                    window.alert(var_error_msg_2);
                    return false;
                }

                start_dt_utc = Date.UTC(parseInt(frm.elements['Year0'].value), parseInt(frm.elements['month0'].value) - 1, day0);

                if (start_dt_utc < Date.UTC(dt_range_start_year, dt_range_start_month - 1, dt_range_start_day)) {
                    window.alert(var_error_msg_1);
                    frm.elements['month0'].value = dt_range_start_month;
                    frm.elements['Day0'].value = dt_range_start_day;
                    return false;
                }

                end_dt_utc = Date.UTC(parseInt(frm.elements['Year1'].value), parseInt(frm.elements['month1'].value) - 1, day1);

                if (end_dt_utc > Date.UTC(dt_range_end_year, dt_range_end_month - 1, dt_range_end_day)) {
                    window.alert(var_error_msg_1);
                    frm.elements['month1'].value = dt_range_end_month;
                    frm.elements['Day1'].value = dt_range_end_day;
                    return false;
                }

                if (start_dt_utc > end_dt_utc) {
                    window.alert(var_error_msg_3);
                    frm.elements['Year0'].value = frm.elements['Year1'].value;
                    frm.elements['month0'].value = frm.elements['month1'].value;
                    frm.elements['Day0'].value = frm.elements['Day1'].value;
                    return false;
                }

            } break;

        case "M":
            {
                start_dt_utc = Date.UTC(parseInt(frm.elements['Year0'].value), parseInt(frm.elements['month0'].value) - 1, 1);
                if (start_dt_utc < Date.UTC(dt_range_start_year, dt_range_start_month - 1, 1)) {
                    window.alert(var_error_msg_1);
                    frm.elements['month0'].value = dt_range_start_month;
                    return false;
                }

                end_dt_utc = Date.UTC(parseInt(frm.elements['Year1'].value), parseInt(frm.elements['month1'].value) - 1, 1);
                if (end_dt_utc > Date.UTC(dt_range_end_year, dt_range_end_month - 1, 1)) {
                    window.alert(var_error_msg_1);
                    frm.elements['month1'].value = dt_range_end_month;
                    return false;
                }

                if (start_dt_utc > end_dt_utc) {
                    window.alert(var_error_msg_3);
                    frm.elements['Year0'].value = frm.elements['Year1'].value;
                    frm.elements['month0'].value = frm.elements['month1'].value;
                    return false;
                }
            } break;

        case "Q":
            {
                if (is_table_layout) {
                    var month = 0;
                    var day = 0;

                    switch (parseInt(frm.elements['quarters'].value)) {
                        case 1:
                            {
                                month = 2;
                                fay = 31;
                            } break;
                        case 2:
                            {
                                month = 5;
                                day = 30;
                            } break;
                        case 4:
                            {
                                month = 8;
                                day = 30;
                            } break;
                        case 8:
                            {
                                month = 11;
                                day = 31;
                            } break;
                    }
                    dt_utc = Date.UTC(parseInt(frm.elements['Year1'].value), month, day);
                    var start_dt_utc = Date.UTC(dt_range_start_year, dt_range_start_month - 1, dt_range_start_day);
                    var end_dt_utc = Date.UTC(dt_range_end_year, dt_range_end_month - 1, dt_range_end_day);

                    if (dt_utc < start_dt_utc || dt_utc > end_dt_utc) {
                        window.alert(var_error_msg_1);
                        return false;
                    }
                }
                else {
                    start_dt_utc = Date.UTC(parseInt(frm.elements['Year0'].value), 0, 1);
                    end_dt_utc = Date.UTC(parseInt(frm.elements['Year1'].value), 0, 1);

                    if (start_dt_utc > end_dt_utc) {
                        window.alert(var_error_msg_3);
                        frm.elements['Year0'].value = frm.elements['Year1'].value;
                        return false;
                    }

                }


            } break;

        case "A":
            {
                start_dt_utc = Date.UTC(parseInt(frm.elements['Year0'].value), 0, 1);
                end_dt_utc = Date.UTC(parseInt(frm.elements['Year1'].value), 0, 1);

                if (start_dt_utc > end_dt_utc) {
                    window.alert(var_error_msg_3);
                    frm.elements['Year0'].value = frm.elements['Year1'].value;
                    return false;
                }
            } break;

        default: return false;
    }

    return true;

}
      

