Simplified Calendar Generator using HTML and JavaScript

I currently have a code structure that automatically generates and outputs the current calendar status of your local timezone. But now, I want this to become even more simplified with and also user input dependent.

The logic here is:
(By utilizing an input form)
(This time, no year is needed and February is always 28 days)

  1. Ask the user for a month (1-12).
  2. Ask for the 1st day of the month (1-7) where 1 is Sunday and 7 is Saturday.
  3. If submit button is clicked, it will then generate the calendar.
    (where the 1st day of the month and its weekday is highlighted(in bold).

The output of this logic will look something like this:

enter image description here

Now, my problem with my own simplified version is that, it only works in identifying the month but the start day doesn’t work since it outputs the start day input then duplicates it in an odd way. Also, it won’t produce the succeeding days to complete the calendar structure. Clearly, I am a bit lost in simplifying the logic of my calendar generator.
Hoping you all could present me some guides and a certain flow of the right implementation for the simplified version that I am trying to attain.

Here’s my take on following the logic:

<html>
<head>
</head>

 <body>

<center>



<form action="#" method="post" onsubmit="return calcCalendar()">

<h2>Calendar Generator</h2>
   <label>Input month: (1-12)</label>
  <input id="monthNumm" type="number">
   </div> <br> <br>
   <div>
    <label>Start day of month: (1-7)</label>
   <input id="startNumm" type="number">
  </div> <br>
 
   <input type="submit" value="Submit">

  

    </form>



    <script language="javascript" type="text/javascript">

      function calcCalendar(){
    
      
    var day_of_week = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
    var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
    
    //  DECLARE AND INITIALIZE VARIABLES
    var Calendar = new Date();
    
    var year = Calendar.getFullYear();     // Returns year   
    var month = document.getElementById("monthNumm").value - 1;  // to ensure that 1 is considered as January, and so on..
    var today = document.getElementById("startNumm").value;     // Returns day (1-31)
    var weekday = document.getElementById("startNumm").value;    // Returns day (1-31)
   
    
    var DAYS_OF_WEEK = 7;    // "constant" for number of days in a week
    var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
    var cal;    // Used for printing
    
    Calendar.setDate(1);    // Start the calendar day at '1'
    Calendar.setMonth(month);    // Start the calendar month at now
    
    
    /* VARIABLES FOR FORMATTING
    NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
          tags to customize your caledanr's look. */
    
    var TR_start = '<TR>';
    var TR_end = '</TR>';
    var highlight_start = '<TD WIDTH="30"><TABLE CELLSPACING=0 BORDER=1 BGCOLOR=DEDEFF BORDERCOLOR=CCCCCC><TR><TD WIDTH=20><B><CENTER>';
    var highlight_end   = '</CENTER></TD></TR></TABLE></B>';
    var TD_start = '<TD WIDTH="30"><CENTER>';
    var TD_end = '</CENTER></TD>';
    
    /* BEGIN CODE FOR CALENDAR
    NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
    tags to customize your calendar's look.*/
    
    cal =  '<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR=BBBBBB><TR><TD>';
    cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2>' + TR_start;
    cal += '<TD COLSPAN="' + DAYS_OF_WEEK + '" BGCOLOR="#EFEFEF"><CENTER><B>';
    cal += month_of_year[month]  + '   ' + year + '</B>' + TD_end + TR_end;
    cal += TR_start;
    
    //   DO NOT EDIT BELOW THIS POINT  //
    
    // LOOPS FOR EACH DAY OF WEEK
    for(index=0; index < DAYS_OF_WEEK; index++)
    {
    
    // BOLD TODAY'S DAY OF WEEK
    if(weekday == index)
    cal += TD_start + '<B>' + day_of_week[index] + '</B>' + TD_end;
    
    // PRINTS DAY
    else
    cal += TD_start + day_of_week[index] + TD_end;
    }
    
    cal += TD_end + TR_end;
    cal += TR_start;
    
    // FILL IN BLANK GAPS UNTIL TODAY'S DAY/////////////////////////////////////
    for(index=0; index < Calendar.getDay(); index++) 
    cal += TD_start + '  ' + TD_end;
    
    // LOOPS FOR EACH DAY IN CALENDAR
    for(index=0; index < DAYS_OF_MONTH; index++)
    {
    if( Calendar.getDate() > index )
    {
      // RETURNS THE NEXT DAY TO PRINT
      week_day =Calendar.getDay();
    
      // START NEW ROW FOR FIRST DAY OF WEEK
      if(week_day == 0)
      cal += TR_start;
    
      if(week_day != DAYS_OF_WEEK)
      {
    
      // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
      var day  = Calendar.getDate();
    
      // HIGHLIGHT TODAY'S DATE
      if( today==Calendar.getDate() )
      cal += highlight_start + day + highlight_end + TD_end;
    
      // PRINTS DAY
      else
      cal += TD_start + day + TD_end;
      }
    
      // END ROW FOR LAST DAY OF WEEK
      if(week_day == DAYS_OF_WEEK)
      cal += TR_end;
      }
    
      // INCREMENTS UNTIL END OF THE MONTH
      Calendar.setDate(Calendar.getDate()+1);
    
    }// end for loop
    
    cal += '</TD></TR></TABLE></TABLE>';
    
    //  PRINT CALENDAR
    document.write(cal);
     
    
    }
      
    
    //  End -->
    </script>



   </center>
   <br/><div style="clear:both"></div>


  </body>
  </html>

Here’s the output of it:

Output of my version

Now, here’s my previous version (the one that automatically generates the current calendar of your current timezone):

    <HTML>
   <head>
  </head>
  <body>
  <center>
  <script language="javascript" type="text/javascript">
  var day_of_week = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
  var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');

//  DECLARE AND INITIALIZE VARIABLES
var Calendar = new Date();

var year = Calendar.getFullYear();     // Returns year
var month = Calendar.getMonth();    // Returns month (0-11)
var today = Calendar.getDate();    // Returns day (1-31)
var weekday = Calendar.getDay();    // Returns day (1-31)

var DAYS_OF_WEEK = 7;    // "constant" for number of days in a week
var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
var cal;    // Used for printing

Calendar.setDate(1);    // Start the calendar day at '1'
Calendar.setMonth(month);    // Start the calendar month at now


    /* VARIABLES FOR FORMATTING
    NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
                tags to customize your caledanr's look. */

var TR_start = '<TR>';
var TR_end = '</TR>';
var highlight_start = '<TD WIDTH="30"><TABLE CELLSPACING=0 BORDER=1 BGCOLOR=DEDEFF BORDERCOLOR=CCCCCC><TR><TD WIDTH=20><B><CENTER>';
var highlight_end   = '</CENTER></TD></TR></TABLE></B>';
var TD_start = '<TD WIDTH="30"><CENTER>';
var TD_end = '</CENTER></TD>';

            /* BEGIN CODE FOR CALENDAR
        NOTE: You can format the 'BORDER', 'BGCOLOR', 'CELLPADDING', 'BORDERCOLOR'
            tags to customize your calendar's look.*/

cal =  '<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=0 BORDERCOLOR=BBBBBB><TR><TD>';
cal += '<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2>' + TR_start;
cal += '<TD COLSPAN="' + DAYS_OF_WEEK + '" BGCOLOR="#EFEFEF"><CENTER><B>';
cal += month_of_year[month]  + '   ' + year + '</B>' + TD_end + TR_end;
cal += TR_start;

//   DO NOT EDIT BELOW THIS POINT  //

// LOOPS FOR EACH DAY OF WEEK
for(index=0; index < DAYS_OF_WEEK; index++)
{

// BOLD TODAY'S DAY OF WEEK
if(weekday == index)
cal += TD_start + '<B>' + day_of_week[index] + '</B>' + TD_end;

// PRINTS DAY
else
cal += TD_start + day_of_week[index] + TD_end;
}

cal += TD_end + TR_end;
cal += TR_start;

// FILL IN BLANK GAPS UNTIL TODAY'S DAY
for(index=0; index < Calendar.getDay(); index++)
cal += TD_start + '  ' + TD_end;

// LOOPS FOR EACH DAY IN CALENDAR
for(index=0; index < DAYS_OF_MONTH; index++)
{
if( Calendar.getDate() > index )
{
// RETURNS THE NEXT DAY TO PRINT
week_day =Calendar.getDay();

   // START NEW ROW FOR FIRST DAY OF WEEK
if(week_day == 0)
 cal += TR_start;

 if(week_day != DAYS_OF_WEEK)
{

   // SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
    var day  = Calendar.getDate();

 // HIGHLIGHT TODAY'S DATE
 if( today==Calendar.getDate() )
 cal += highlight_start + day + highlight_end + TD_end;

    // PRINTS DAY
 else
  cal += TD_start + day + TD_end;
}

   // END ROW FOR LAST DAY OF WEEK
    if(week_day == DAYS_OF_WEEK)
    cal += TR_end;
    }

    // INCREMENTS UNTIL END OF THE MONTH
   Calendar.setDate(Calendar.getDate()+1);

   }// end for loop

    cal += '</TD></TR></TABLE></TABLE>';

   //  PRINT CALENDAR
    document.write(cal);

 //  End -->
  </script>
  </center>
  <br/><div style="clear:both"></div>
  </body>
   </html>

and here is its output:

enter image description here

Hoping for your responses as this would help me a lot! Thank you very much!!!